偶爾用得上的MySQL操作
阿新 • • 發佈:2018-11-16
資料庫編碼
檢視資料庫編碼
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.