如何远程连接mysql_mysql远程访问配置

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

MySQL 默认只允许本地连接,要实现远程访问,需同时修改服务端配置、用户权限和系统防火墙设置。单独改某一项通常无法成功。

1. 修改 MySQL 配置文件,允许监听外部地址

MySQL 服务默认绑定在 127.0.0.1(仅本地),需改为监听所有 IP 或指定 IP:

编辑配置文件(Linux 常为 /etc/mysql/mysql.conf.d/mysqld.cnf/etc/my.cnf;Windows 为 my.ini 找到 bind-address 行,将其改为:
bind-address = 0.0.0.0(监听所有 IPv4 地址)
或指定服务器公网/内网 IP(如 bind-address = 192.168.1.100
保存后重启 MySQL 服务:
sudo systemctl restart mysql(Ubuntu/Debian)
sudo systemctl restart mysqld(CentOS/RHEL)

2. 创建或授权远程访问用户

root 用户默认可能禁止远程登录,建议新建专用用户并赋权:

登录 MySQL:
mysql -u root -p
创建新用户(示例用户名 remote_user,密码 SecurePass123,允许从任意主机连接):
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'SecurePass123';
赋予必要权限(如只读可改用 SELECT):
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
刷新权限:
FLUSH PRIVILEGES;

⚠️ 注意:'%' 表示任意主机,生产环境建议限定为具体 IP(如 'remote_user'@'192.168.1.50')以提升安全性。

3. 开放服务器防火墙端口

MySQL 默认使用 3306 端口,需确保该端口对外可达:

Ubuntu/Debian(UFW):
sudo ufw allow 3306
sudo ufw reload
CentOS/RHEL(firewalld):
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
云服务器(如阿里云、腾讯云)还需在安全组中手动放行 3306 端口

4. 连接测试与常见问题

在远程客户端执行连接命令验证:

命令示例:
mysql -h 服务器公网IP -P 3306 -u remote_user -p
若提示 ERROR 2003 (HY000): Can't connect to MySQL server,检查:
— MySQL 是否真正监听 0.0.0.0(运行 netstat -tuln | grep :3306
— 防火墙/安全组是否生效
— 用户 host 是否匹配(SELECT Host, User FROM mysql.user;
若提示 Access denied,重点核查用户权限和密码是否正确,注意大小写及特殊字符转义

相关推荐