设置 MySQL 允许远程连接需要从配置文件、用户权限和防火墙三个层面进行操作,以下是详细步骤:
MySQL 默认只监听本地 127.0.0.1
地址,需修改配置使其接受远程请求。
-
找到配置文件(位置因系统而异):
-
Linux 系统:通常在
/etc/mysql/mysql.conf.d/mysqld.cnf
或 /etc/my.cnf
-
Windows 系统:在 MySQL 安装目录(如
C:\Program Files\MySQL\MySQL Server 8.0\my.ini
)
-
编辑配置文件:找到 bind-address
配置项,将其注释或改为 0.0.0.0
(表示监听所有网络接口):
-
重启 MySQL 服务使配置生效:
-
Linux:
sudo systemctl restart mysql
或 sudo service mysqld restart
-
Windows:通过「服务」管理界面重启
MySQL
服务,或命令行执行:
net stop mysql
net start mysql
MySQL 用户权限与访问来源绑定(格式为 用户名@访问IP
),需为远程连接单独授权。
-
本地登录 MySQL:
-
创建远程用户并授权(二选一):
-
方式 1:新建专用远程用户(推荐,安全性更高):
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON db_name.* TO 'remote_user'@'%';
-
方式 2:允许现有用户(如 root)远程访问:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_root_password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
说明:%
代表所有 IP,若需限制特定 IP,可改为具体地址(如 192.168.1.100
)。
-
刷新权限:
MySQL 默认端口为 3306
,需在服务器防火墙中允许该端口的入站连接。
-
Linux 系统(UFW 防火墙):
sudo ufw allow 3306/tcp
sudo ufw reload
-
Linux 系统(Firewalld):
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
-
Windows 系统:
-
打开「控制面板 → 系统和安全 → Windows Defender 防火墙 → 高级设置」
-
点击「入站规则 → 新建规则」,选择「端口」,输入
3306
,允许连接。
在客户端电脑上通过命令行或工具测试连接:
-
命令行测试:
mysql -h 服务器IP地址 -u 远程用户名 -p
输入密码后,若能成功登录 MySQL 控制台,则配置生效。
-
工具测试:使用 Navicat、MySQL Workbench 等工具,输入服务器 IP、端口(3306)、用户名和密码,测试连接。
-
安全性建议:
-
避免使用
root
用户直接远程访问,创建专用低权限用户。
-
限制访问 IP 为具体地址(而非
%
),减少安全风险。
-
生产环境建议通过 VPN 或 SSH 隧道连接,而非直接开放公网 3306 端口。
-
MySQL 8.0 兼容问题:若客户端连接时报错(如 caching_sha2_password
相关错误),可将用户认证方式改为旧版:
ALTER USER 'remote_user'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
完成以上步骤后,MySQL 即可接受远程连接。