如何开启mysql远程访问_mysql远程连接配置方法

来源:这里教程网 时间:2026-02-28 20:50:11 作者:

要让 MySQL 支持远程连接,核心是两步:修改用户权限,允许从非本地地址登录;调整 MySQL 配置,放开绑定限制。缺一不可,否则即使账号设对了也连不上。

检查并修改 MySQL 用户的 host 权限

MySQL 默认创建的用户(比如 root)通常只允许 localhost127.0.0.1 登录,远程 IP 会被拒绝。需显式授权:

登录 MySQL(本地):
mysql -u root -p
查看当前用户及允许的 host:
SELECT User, Host FROM mysql.user;
若 root 只有 localhost,可新增一个支持任意 IP 的用户(生产环境建议用具体 IP 或子网):
CREATE USER 'root'@'%' IDENTIFIED BY '你的强密码';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;
更安全的做法是限定来源 IP,例如只允 192.168.1.100:
CREATE USER 'appuser'@'192.168.1.100' IDENTIFIED BY 'pass123';
,再赋权

修改 MySQL 配置文件,放开 bind-address

MySQL 默认只监听本地回环地址,需改配置使其接受外部连接:

找到配置文件:Linux 通常是
/etc/mysql/mysql.conf.d/mysqld.cnf
/etc/my.cnf
Windows
my.ini
(在 MySQL 安装目录下)
搜索
bind-address
,将其值改为:
bind-address = 0.0.0.0
(监听所有 IPv4 接口)
⚠️ 注意:不要删掉这行,也不要写成
127.0.0.1
或留空,否则无效
保存后重启服务:
sudo systemctl restart mysql
(Ubuntu/Debian)或
sudo service mysqld restart
(CentOS)

确认防火墙放行 3306 端口

即使 MySQL 配置正确,系统防火墙也可能拦截远程请求:

Ubuntu/Debian(ufw):
sudo ufw allow 3306
CentOS 7+/RHEL(firewalld):
sudo firewall-cmd --permanent --add-port=3306/tcp
,然后
sudo firewall-cmd --reload
云服务器(如阿里云、腾讯云)还需在**安全组规则**中手动添加入方向 TCP:3306,来源可设为指定 IP 或 0.0.0.0/0(不推荐全放开)

测试连接是否生效

在远程机器上用客户端验证(别用图形工具先,优先用命令行排除干扰):

Linux/macOS:
mysql -h 服务器IP -u 用户名 -p
Windows 命令提示符同上;或使用 Navicat、DBeaver 等工具,填入 IP、端口、用户名、密码 常见报错对照:
ERROR 1130: Host 'x.x.x.x' is not allowed to connect → 用户 host 权限未设好
Can't connect to MySQL server on 'x.x.x.x' → 防火墙/安全组/MySQL 未监听或服务未启动
Access denied for user → 密码错误或用户不存在

配置本身不复杂,但每个环节都可能卡住。建议按顺序逐项检查:用户权限 → 配置文件 → 防火墙 → 远程测试。生产环境务必避免用 root + %,应创建专用账号并限制 IP 和权限范围。

相关推荐