宝塔面板安装MySQL后无法远程连接?手把手教你开启远程访问权限
在使用宝塔面板部署网站或应用时,我们经常会遇到需要从本地或其他服务器远程连接到MySQL数据库的情况。然而,默认情况下,宝塔面板安装的MySQL是禁止远程连接的,这会导致你使用数据库管理工具(如Navicat、DBeaver、HeidiSQL等)时连接失败。
本文将详细介绍如何在宝塔面板环境下为MySQL开启远程连接,涵盖从云服务器配置到数据库权限设置的完整流程,适用于MySQL 5和MySQL 8版本。
问题原因分析
当你尝试远程连接MySQL时出现“10061”、“10038”或“2003 - Can't connect to MySQL server”等错误,通常由以下三个原因造成:
云服务器安全组未放行3306端口
宝塔面板防火墙未放行3306端口
MySQL用户权限未允许远程访问
接下来,我们将逐一解决这三个问题。
步骤一:在云服务器厂商控制台放行3306端口
无论你使用的是阿里云、腾讯云、华为云还是其他云服务商,都需要在安全组规则中放行MySQL的默认端口 3306
。
操作步骤(以阿里云为例):
登录 阿里云ECS控制台
找到你的服务器实例,点击进入详情页
进入“安全组”或“网络与安全组”配置
添加安全组规则:
授权策略:允许
协议类型:TCP
端口范围:
3306/3306
授权对象:
0.0.0.0/0
(允许所有IP)
⚠️ 建议:生产环境不要开放给所有IP,仅允许特定IP访问以提高安全性。
步骤二:在宝塔面板防火墙中放行3306端口
即使云服务器放行了端口,宝塔面板自带的防火墙也可能拦截外部请求。
操作步骤:
登录宝塔面板
进入左侧菜单 “安全” → “系统防火墙”
点击 “添加端口规则”
输入端口:
3306
备注可填写“MySQL远程连接”
点击“确定”
✅ 此时,服务器的防火墙已允许外部访问3306端口。
步骤三:开启MySQL远程访问
1. 登录MySQL命令行
mysql -u root -p
输入你的MySQL root密码后进入MySQL命令行。
2. 根据MySQL版本执行不同命令
✅ MySQL 5.x 版本
-- 1. 授权所有数据库的所有表给root用户,允许任何IP访问,并设置密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的root密码' WITH GRANT OPTION;
-- 2. 刷新权限
FLUSH PRIVILEGES;
✅ MySQL 8.x 版本(注意语法变化)
MySQL 8取消了 IDENTIFIED BY
在 GRANT
中的用法,需分步操作:
-- 1. 修改root用户认证方式(可选,解决某些客户端兼容性问题)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的root密码';
-- 2. 创建或授权root用户从任意主机登录
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的root密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
-- 3. 刷新权限
FLUSH PRIVILEGES;
📌 替换
'你的root密码'
为实际的root密码
3. 验证用户权限
SELECT user, host FROM mysql.user WHERE user = 'root';
你应该能看到类似结果:
+------+-----------+
| user | host |
+------+-----------+
| root | localhost |
| root | % |
+------+-----------+
这表示root用户可以从任意IP连接。
测试远程连接
使用Navicat、DBeaver或命令行测试连接:
主机:你的服务器公网IP
端口:3306
用户名:root
密码:你设置的密码
如果连接成功,说明配置完成!
结语
通过以上三步:放行云服务器端口 → 开启宝塔防火墙 → 配置MySQL远程权限,你已经成功开启了宝塔面板MySQL的远程连接功能。
虽然过程看似复杂,但只要按步骤操作,绝大多数连接问题都能迎刃而解。希望本文能帮助你顺利实现远程数据库管理