1. 程式人生 > >偶爾用得上的MySQL操作

偶爾用得上的MySQL操作

資料庫編碼

檢視資料庫編碼

use xxx
show variables like 'character_set_database';

切換資料庫編碼

alter database xxx CHARACTER SET gb2312;

修改自增ID

建立表格時設定自增ID從N開始:

CREATE TABLE TABLE_1 (
        ID INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
        NAME VARCHAR(5) NOT NULL 
    )
AUTO_INCREMENT = 100;

讓自增ID從預設值開始, 但是注意:這個命令會清空資料包記錄!

TRUNCATE TABLE table1

設定user表自增ID從123456開始

alter table users AUTO_INCREMENT=123456;

無法遠端登入

在已經修改配置檔案中的地址為 0.0.0.0 但仍然無法遠端登入的情況下, 一般是需要對資料庫中的賬戶資訊進行修改

授權使用者 (推薦)

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

直接修改 user

mysql>use mysql;
mysql>update user set host = '%' where user = 'root';

以上方法操作完成後還需執行 FLUSH PRIVILEGES; 重新整理一遍許可權

遠端連線速度慢

有時遠端連線到 MySQL 用時會很久, 同時本地連線 MySQL 正常. 出現這種問題的主要原因是預設安裝的 MySQL 開啟了 DNS 的反向解析.

MySQL DNS 反向解析

MySQL 接收到連線請求後,獲得的是客戶端的ip,為了更好的匹配 mysql.user 裡的許可權記錄(某些是用 hostname 定義的).
如果mysql伺服器設定了dns伺服器, 並且客戶端 ip 在 DNS 上並沒有相應的hostname, 那麼這個過程很慢, 導致連線等待.

禁用 DNS 反向解析

在 MySQL 的配置檔案 /etc/mysql/mysql.conf.d/mysqld.cnf[mysqld] 新增 skip-name-resolve 即可禁用 DNS 反向解析, 加快遠端連線的速度. 同時這樣配置後不能在 MySQL 的授權表中使用主機名了, 只能使用IP.