宝塔面板数据库远程访问权限管控:从开启到安全限制
很多站长在用宝塔面板管理服务器时,会遇到需要在本地电脑上远程连接服务器数据库的情况。
默认安装的 MySQL 或 MariaDB 只允许本地访问,直接开启远程权限又有安全隐患。
本文就结合宝塔面板,讲清楚如何安全地管控数据库远程访问权限,既能用得上,又不会给服务器留一个敞开的门。
开启远程访问前需要确认的事
开始操作前,先检查三个基础条件:
- 宝塔面板已安装 MySQL 或 MariaDB,并记住 root 密码。可以在宝塔面板左侧点击“数据库”查看。
- 服务器的 安全组(云平台防火墙)和 宝塔防火墙 都放行了 3306 端口。如果没放行,远程连接会被直接拦截。
- 明确你的远程连接来源 IP。如果是家里宽带,IP 可能变化,建议使用固定 IP 或 VPN 后再连接。
两步开启数据库远程访问权限
第一步:修改数据库配置,解除地址绑定
默认 MySQL 配置文件(/etc/my.cnf 或 /etc/mysql/my.cnf)中有一行 bind-address = 127.0.0.1,这会让数据库只监听本机。
通过宝塔面板的“文件”功能,找到对应配置文件,把这一行改成 bind-address = 0.0.0.0,保存后重启数据库服务。
重启操作路径:宝塔面板左侧“服务” → 点击“MySQL”后面的“重启”。
如果不确定配置文件位置,可以直接在宝塔安全页面下搜索“bind-address”,但推荐直接使用面板的文件编辑器修改。
第二步:授权远程连接用户
不能直接开放 root 的远程权限(除非你完全信任网络环境)。
更好的做法是创建一个专门用于远程连接的用户,并只给需要的数据库操作权限。
登录宝塔面板左侧“数据库” → 点击“phpMyAdmin”或直接使用“终端”执行 SQL。
在 phpMyAdmin 的 SQL 窗口中执行以下命令:
-- 创建一个用户,允许从任意 IP 连接(生产环境不建议)
-- 建议把 '任意IP' 替换成你的固定 IP,例如 '192.168.1.100'
CREATE USER 'remote_user'@'你的IP' IDENTIFIED BY '强密码';
-- 授予该用户对某个数据库的所有权限(推荐仅一个库)
GRANT ALL PRIVILEGES ON `你的数据库名`.* TO 'remote_user'@'你的IP';
-- 刷新权限
FLUSH PRIVILEGES;
如果想允许该用户从多个 IP 连接,可以创建多个用户,或使用 'remote_user'@'192.168.%' 的形式允许一个网段。
⚠️ 安全提示:不要使用 'remote_user'@'%'(允许所有 IP),除非你用了强密码并且开启了 SSL 或 IP 过滤。
避坑指南:三个最容易翻车的地方
- 防火墙没有放行 3306:很多用户改完配置后依然连不上,先去宝塔面板左侧“安全” → “系统防火墙”检查是否添加了 3306 端口规则(tcp)。同时要确认云服务器厂商的安全组也放行了该端口。
- 忘记刷新权限:执行
FLUSH PRIVILEGES;后才能让授权生效。 - 授权用户与数据库不匹配:如果连接时提示
Access denied,检查用户名、IP 段、密码和授权的数据库是否对应。可以使用SELECT user, host FROM mysql.user;查看已有用户。
如何验证远程访问权限已生效
在本地电脑上使用命令行或图形化工具(如 Navicat、DBeaver)测试连接。
以 MySQL 客户端为例:
mysql -h 你的服务器IP -P 3306 -u remote_user -p
输入密码后能成功进入数据库,说明远程权限开通成功。
如果提示 Can't connect to MySQL server on '...',依次检查:
- 服务器 3306 端口是否开放(使用
telnet 服务器IP 3306测试) - 配置文件中
bind-address是否已改为0.0.0.0 - 用户授权 IP 段是否包含你当前连接的 IP
常见问题解答
问:开启远程访问后,数据库会不会容易被人扫?
会,所以必须限制 IP 白名单,并且使用强密码。不使用时可以关闭远程端口。
问:如何彻底关闭远程访问?
把 bind-address 改回 127.0.0.1,重启数据库,并删除远程授权用户(DROP USER 'remote_user'@'IP';)。
问:宝塔面板的“数据库”页面里直接有远程权限开关吗?
宝塔面板本身没有直接开关,但可以通过修改配置和 SQL 管理,这正是本文提供的完整方案。
如果你在按本文操作中遇到其他报错,建议先回看“避坑指南”和验证步骤,再根据具体错误信息搜索解决方案。
安全第一,远程访问权限管控做得好,后续数据库管理会省心很多。