零基础也能配置宝塔面板数据库远程连接,这几个坑别踩
前置准备
在进行宝塔面板数据库远程连接前,请确认以下条件满足:
- 已安装宝塔面板(推荐 CentOS 7+ 或 Ubuntu 18+),且能正常登录面板后台。
- 已创建数据库(如 MySQL 5.7 或 MariaDB 10.4+),并记录数据库 root 密码。
- 服务器防火墙(云厂商安全组 + 宝塔系统防火墙)中的 3306 端口初始默认关闭,需要手动开放。
- 本地网络:使用
telnet或nc命令测试端口前,确保本地能访问服务器公网 IP。
注意:数据库远程连接直接暴露在外网有安全隐患,建议后续通过 IP 白名单 或 SSH 隧道 加固访问。
分步操作
第一步:登录宝塔面板,进入数据库管理
- 打开浏览器,访问
http://你的服务器IP:你的面板端口,输入账号密码登录。 - 在左侧菜单栏点击 数据库 -> phpMyAdmin(或直接点击数据库列表)。
- 选择需要远程访问的数据库,点击 权限管理。
第二步:设置远程访问用户权限
默认 root 用户仅限本地访问,需要新建一个远程专用用户或修改 root 主机限制。
推荐新建用户:
- 在 用户账号 标签页点击 添加用户。
- 填写用户名(如
remote_user)、主机选择 任意主机(%),设置强密码。 - 勾选 全局权限,建议只授予
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP等必要权限,不必给SUPER。 - 点击 执行。
如果仍想使用 root 远程,在 /tmp 目录下用命令操作(宝塔面板的 MySQL 命令行):
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的root密码' WITH GRANT OPTION;FLUSH PRIVILEGES;箭头:FLUSH PRIVILEGES 使权限立即生效。
第三步:开放服务器端口和云安全组
宝塔面板防火墙:
- 进入宝塔面板 → 安全 → 防火墙。
- 点击 放行端口,填写
3306,备注为MySQL远程连接,协议 TCP,点击确定。
云服务商安全组(以阿里云为例):
- 登录阿里云控制台 → 找到你的 ECS 实例 → 点击本实例安全组。
- 在 入方向 添加规则:
- 授权策略:允许
- 协议类型:MYSQL(3306)
- 授权对象:
0.0.0.0/0(建议后续改为你公司的公网 IP 段,如123.123.123.0/24) - 优先级:100
如果服务器同时有 iptables 或 ufw,使用宝塔面板管理即可,无需再手动操作。
第四步:验证连接
本地电脑打开命令行(Windows 用 cmd,Mac/Linux 用终端),执行:
mysql -h 你的服务器公网IP -u remote_user -p输入密码后如果能进入 MySQL 命令行,说明宝塔面板数据库远程连接配置成功。
避坑指南
- 坑1:root 无法远程连接。 默认 root 用户 host 为
localhost,必须改为%或新建用户。不要忘记执行FLUSH PRIVILEGES。 - 坑2:防火墙开放了仍是连接超时。 检查云服务商安全组是否已放行 3306 端口,部分厂商需要 重启安全组生效 或 重启实例。
- 坑3:连接时提示
Access denied for user。 密码错误或权限未刷新。重新执行 GRANT + FLUSH。 - 坑4:MySQL 配置中
bind-address设为127.0.0.1。 需要改为0.0.0.0,然后重启 MySQL(在宝塔面板 → 数据库 → MySQL → 重启)。 - 坑5:本地 telnet 3306 端口不通。 可能服务器上的 iptables 规则阻止,或宝塔面板放行端口后未重启防火墙服务。可在宝塔面板 安全 页勾选 重启。
高频问题解答
Q1:如何只允许指定 IP 连接数据库?
在创建用户时将主机设为 IP 地址(如 192.168.1.100)或者网段(192.168.1.%)。
已创建的用户可以修改 host:
UPDATE mysql.user SET Host='192.168.1.100' WHERE User='remote_user';FLUSH PRIVILEGES;Q2:远程连接速度很慢是什么原因?
通常是 MySQL 解析客户端的 DNS 所致。
在 MySQL 配置文件 /etc/my.cnf 的 [mysqld] 下添加 skip-name-resolve,然后重启 MySQL 即可。
Q3:修改了密码后远程连接还是用旧密码成功?
修改密码后需要再执行 FLUSH PRIVILEGES。
如果使用了 ALTER USER 语句,也需要刷新。
建议修改后在宝塔面板中重启 MySQL。
Q4:安全性如何进一步提升?
- 将 MySQL 默认 3306 端口改为高位端口(如 13306)。
- 关闭 root 远程,仅使用专用账户。
- 使用 SSH 隧道或 VPN 连接数据库,不直接暴露公网。
效果验证
完成以上步骤后,使用 navicat、DBeaver 等图形化工具连接:
- 主机:服务器公网 IP(或域名)
- 端口:3306(如果没改)
- 用户名:上面创建的
remote_user - 密码:你设置的密码
点击测试连接,显示 连接成功 即代表配置正确。
如果你正在处理宝塔面板数据库远程连接,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。