mysql -u root -p
USE mysql;
-- 授權指定庫、指定 IP
GRANT ALL ON db_name.* TO 'remote_user'@'192.168.1.%' IDENTIFIED BY 'strong_pass';
-- 或授權所有庫(慎用)
GRANT ALL ON *.* TO 'remote_user'@'%' IDENTIFIED BY 'strong_pass';
FLUSH PRIVILEGES;
\q
驗證:mysql -u remote_user -p -h server_ip
防火牆:確保 3306 端口對來源 IP 開放(iptables -A INPUT -p tcp --dport 3306 -s 192.168.1.0/24 -j ACCEPT)。
報錯:Client does not support authentication protocol requested by server; consider upgrading MySQL client
原因:MySQL 4.1+ 採用 41 字節雜湊密碼,舊客戶端只支援 16 字節老格式。
UPDATE mysql.user SET Password = OLD_PASSWORD('new_pass') WHERE User = 'root';
FLUSH PRIVILEGES;
或
SET PASSWORD FOR 'user'@'%' = OLD_PASSWORD('new_pass');
注意:所有同用戶名的 host 記錄(localhost、127.0.0.1、% 等)均需更新,否則仍會報錯。
mysqli / PDO_MySQL(原生驅動 mysqlnd),支援新協議。libmysqlclient 至 5.1+。