MySQL 远程访问配置指南:让其他电脑也能连接你的数据库

      发布在:个人笔记      评论:0 条评论

? 前言

在开发、测试或部署项目时,我们经常需要从其他电脑访问 MySQL 数据库,比如:

  • 前端同事连接你的后端数据库调试接口
  • 测试人员在另一台机器运行自动化脚本
  • 服务器部署后,本地开发机远程管理数据
  • 使用 Navicat、DBeaver 等图形工具连接远程 MySQL

但默认安装的 MySQL 只允许本机访问(localhost),直接连接会报错:

ERROR 1130 (HY000): Host 'xxx' is not allowed to connect to this MySQL server

别慌!本文将手把手教你 4 步配置 MySQL 支持远程访问,并附带安全加固建议,让你既方便又安全!


✅ 第一步:修改 MySQL 配置文件,允许外部连接

默认 MySQL 只监听 127.0.0.1(本机),我们需要让它监听所有 IP。

? 配置文件路径:

系统配置文件路径
WindowsD:\phpstudy_pro\Extensions\MySQL*\my.ini
Linux/etc/mysql/mysql.conf.d/mysqld.cnf 或 /etc/my.cnf
macOS/usr/local/mysql/etc/my.cnf

? 使用 phpStudy、WAMP、XAMPP 等集成环境?配置文件通常在安装目录下的 MySQL/conf/ 或直接搜索 my.ini。

? 修改内容:

找到 bind-address 配置项:

bind-address = 127.0.0.1

? 修改为:

bind-address = 0.0.0.0

✅ 0.0.0.0 表示监听所有网卡/IP。你也可以指定服务器内网 IP,如 192.168.1.100

? 重启 MySQL 服务

# Linux
sudo systemctl restart mysql

# Windows(管理员 CMD)
net stop mysql
net start mysql

⚠️ phpStudy 用户请在界面中“停止 MySQL → 启动 MySQL”。


✅ 第二步:创建或授权远程用户

MySQL 权限系统是 用户名@主机名 双重验证。默认 root@localhost 不允许远程登录。

✅ 推荐方式:创建专用远程用户(安全!)

-- 登录 MySQL(在服务器本机执行)
mysql -u root -p

-- 创建用户(允许从任意 IP 连接)
CREATE USER 'dev_user'@'%' IDENTIFIED BY 'YourStrongPassword123!';

-- 授权数据库操作权限(按需调整)
GRANT SELECT, INSERT, UPDATE, DELETE ON your_database.* TO 'dev_user'@'%';

-- 刷新权限
FLUSH PRIVILEGES;

⚠️ 不推荐:开放 root 远程访问(仅测试环境)

-- 允许 root 从任意主机连接(危险!)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_root_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

?️ 生产环境强烈建议使用独立用户,避免 root 泄露导致删库跑路!


✅ 第三步:开放防火墙端口(3306)

MySQL 默认端口是 3306,需放行入站连接。

? Windows 防火墙设置:

  1. 打开“控制面板” → “Windows Defender 防火墙” → “高级设置”
  2. 点击“入站规则” → “新建规则”
  3. 选择“端口” → TCP → 特定端口:3306
  4. 允许连接 → 下一步 → 命名如 “MySQL Remote” → 完成

? Linux(Ubuntu/CentOS):

# Ubuntu
sudo ufw allow 3306/tcp

# CentOS
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

✅ 第四步:云服务器用户额外配置(阿里云/腾讯云/AWS)

如果你的 MySQL 跑在云服务器上,还需:

  1. 登录云控制台 → 安全组
  2. 添加入站规则:协议 TCP,端口 3306,来源 IP 可设为:
    • 0.0.0.0/0(任意 IP,测试用)
    • 192.168.1.0/24(公司内网段)
    • 你的公网IP/32(仅你个人电脑)

? 第五步:测试远程连接

在其他电脑上执行:

mysql -h [服务器IP] -u [用户名] -p

示例:

mysql -h 192.168.117.150 -u dev_user -p

或使用图形工具:

  • Navicat:新建连接 → 填写 IP、端口、用户名、密码
  • DBeaver / MySQL Workbench 同理

✅ 成功登录 = 配置完成!


?️ 安全加固建议(必看!)

远程访问虽方便,但也带来安全风险。请务必:

建议项说明
❌ 不开放 root 远程创建专用用户,权限最小化
✅ 限制访问 IP使用 'user'@'192.168.1.%' 或固定 IP
✅ 使用强密码包含大小写、数字、符号,长度 ≥12
✅ 启用 SSL 加密防止中间人窃听(进阶)
✅ 定期审计用户权限SELECT host,user FROM mysql.user;
✅ 使用 SSH 隧道更安全的远程访问方式(推荐生产环境)

❗ 常见错误排查

1. ERROR 1130: Host 'xxx' is not allowed...

? 原因:用户未授权该主机连接
✅ 解决:执行 GRANT ... TO 'user'@'%' 并 FLUSH PRIVILEGES;

2. ERROR 2003: Can't connect to MySQL server

? 原因:网络不通 / 防火墙拦截 / MySQL 未监听
✅ 解决:

  • ping 服务器IP → 通吗?
  • telnet 服务器IP 3306 → 能连上吗?
  • 检查 bind-address 和防火墙

3. 连接超时 / 无响应

? 可能是云服务器安全组未放行,或 MySQL 服务未启动。


? 总结

配置 MySQL 远程访问只需四步:

  1. 改 bind-address = 0.0.0.0
  2. 创建或授权远程用户(推荐非 root)
  3. 开放防火墙 3306 端口
  4. 云服务器配置安全组

小贴士:开发环境可适当宽松,生产环境务必遵循最小权限原则!

相关文章
热门推荐