要让 MySQL 支持远程访问需两步:一是修改配置文件 bind-address 为 0.0.0.0 并重启服务,二是创建或授权用户如 'remote_user'@'%' 并刷新权限,最后确保防火墙及云安全组放行 3306 端口。

要让 MySQL 支持远程访问,核心是两步:修改绑定地址允许外部连接,再给指定用户授予远程登录权限。缺一不可,否则即使账号有权限也连不上,或能连上但被拒绝访问数据库。
1. 修改 MySQL 配置文件,放开监听地址
MySQL 默认只监听本地(127.0.0.1),需改为监听所有 IP 或指定网卡。
- 找到配置文件:Linux 通常是
/etc/mysql/mysql.conf.d/mysqld.cnf或/etc/my.cnf;Windows 是my.ini(在 MySQL 安装目录下) - 查找
bind-address这一行,将其改为:bind-address = 0.0.0.0(监听所有 IPv4 地址)
或指定服务器内网 IP,如bind-address = 192.168.1.100 - 保存后重启 MySQL 服务:
sudo systemctl restart mysql(Ubuntu/Debian)sudo service mysqld restart(CentOS/RHEL)
2. 登录 MySQL,创建或授权远程用户
必须用 root 或高权限账号登录本地 MySQL(mysql -u root -p),然后执行授权语句。
- 如果想复用现有用户(比如 root),直接授权(不推荐用于生产):
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION; - 更安全的做法:新建专用远程用户(例如用户名
remote_user,密码SecurePass123):CREATE USER 'remote_user'@'%' IDENTIFIED BY 'SecurePass123';GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'remote_user'@'%'; - 务必刷新权限:
FLUSH PRIVILEGES;
3. 检查防火墙是否放行 3306 端口
即使 MySQL 配置正确,防火墙也可能拦截连接请求。
- Ubuntu/Debian(UFW):
sudo ufw allow 3306 - CentOS 7+/RHEL(firewalld):
sudo firewall-cmd --permanent --add-port=3306/tcpsudo firewall-cmd --reload - 云服务器(如阿里云、腾讯云):还需在安全组中手动放行 TCP 3306 端口
4. 测试远程连接
从另一台机器用客户端测试,确认是否生效:
- 命令行连接(需安装 MySQL 客户端):
mysql -h 服务器公网IP -u remote_user -p - 图形工具(如 MySQL Workbench、DBeaver):填入 IP、用户名、密码和端口(默认 3306)
- 常见报错提示参考:
–ERROR 1130: Host 'x.x.x.x' is not allowed to connect→ 用户授权未生效或 host 不匹配
–Can't connect to MySQL server→ 网络不通、防火墙拦截、MySQL 未监听 0.0.0.0 或服务未启动
配置本身不复杂,但每一步都可能成为连接失败的原因。建议按顺序检查:配置文件 → 授权语句 → 防火墙 → 远程测试。安全起见,生产环境尽量避免开放 root 远程登录,且限制可连接的 IP 范围(把 @'%' 换成 @'192.168.1.%' 或具体 IP)。










