針對 Ubuntu 16.04/18.04/20.04 通用流程,從 apt 安裝到遠程連通,含 root 遠程授權與安全收口建議。
apt-get update apt-get install -y mysql-server mysql-client libmysqlclient-dev
安裝過程會交互提示設置 root 密碼(若未提示,後續手動設置)。
mysql -u root -p
# 進入後
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!'; -- 5.7+
# 或
UPDATE mysql.user SET authentication_string=PASSWORD('NewPass123!') WHERE User='root';
FLUSH PRIVILEGES;
CREATE DATABASE proxy; GRANT ALL PRIVILEGES ON proxy.* TO 'test'@'localhost' IDENTIFIED BY 'testpwd'; GRANT ALL PRIVILEGES ON proxy.* TO 'test'@'%' IDENTIFIED BY 'testpwd'; -- 允許任意主機 FLUSH PRIVILEGES;
vim /etc/mysql/mysql.conf.d/mysqld.cnf # 或 /etc/mysql/my.cnf # 找到 bind-address = 127.0.0.1 # 改為 bind-address = 0.0.0.0 # 保存退出
systemctl restart mysql
ufw allow 3306/tcp ufw reload # 或 iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
使用 MySQL-Front、Navicat、DBeaver 等客戶端,填寫服務器 IP、端口 3306、用戶 test、密碼 testpwd 連接測試。
方案 A:授權法(推薦)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'RootPass123!' WITH GRANT OPTION; FLUSH PRIVILEGES;
方案 B:改表法
USE mysql; UPDATE user SET Host='%' WHERE User='root'; FLUSH PRIVILEGES;
安全收口(禁止 root 遠程):
DELETE FROM mysql.user WHERE User='root' AND Host='%'; FLUSH PRIVILEGES;
skip-name-resolve 禁用 DNS 反解,提升連接速度並避免主機名匹配問題。mysql.user 表。