宝塔面板远程访问数据库

宝塔面板远程访问数据库

  • admin admin
  • 2026-09-13
  • 4490
  • 0

宝塔面板远程访问数据库是指通过宝塔面板开启MySQL或MariaDB的网络监听与账号授权,使外部客户端能够通过公网或内网IP连接并管理服务器上的数据库。开启远程访问前的准备工作默认情况下,宝塔面板安装的MySQL或MariaDB只监听本机地址127.0.0...

优惠价格:¥ 5
当前位置:首页 > 宝塔VPS面板 > 宝塔面板远程访问数据库
详情介绍

宝塔面板远程访问数据库是指通过宝塔面板开启MySQL或MariaDB的网络监听与账号授权,使外部客户端能够通过公网或内网IP连接并管理服务器上的数据库。

开启远程访问前的准备工作

默认情况下,宝塔面板安装的MySQL或MariaDB只监听本机地址127.0.0.1,仅允许服务器本地的应用程序连接,要实现远程访问,需要同时完成三方面配置:数据库服务监听地址、数据库用户授权、网络端口放行,缺少任何一环都会导致连接失败。

首先确认服务器已经安装宝塔面板,并且在“软件商店”中安装并启动了MySQL或MariaDB,进入宝塔面板后,在“数据库”页面可以看到当前已创建的数据库列表,如果没有数据库,需要先创建数据库或直接使用root账号,但出于安全考虑,不建议直接开放root账号的远程权限,建议创建独立的远程访问账号。

宝塔面板内的远程访问设置

宝塔面板不同版本中,远程访问入口略有差异,较新的版本在“数据库”页面中,点击某个数据库对应的“权限”按钮,会弹出权限设置窗口,在“访问权限”一栏中,可以选择“本地服务器”“所有人”或“指定IP”,选择“所有人”表示允许任意IP连接,等价于MySQL中的主机字段为“%”,选择“指定IP”则需要填写允许连接的客户端公网IP或内网IP段,例如192.168.1.%或203.0.113.15。

宝塔面板远程访问数据库  第1张

设置完成后,宝塔面板会自动修改数据库用户的Host字段,并可能同步调整防火墙规则,如果面板没有自动放行端口,需要进入“安全”页面,在“防火墙”中添加放行规则,端口填写3306或数据库实际监听端口,协议选择TCP,来源可以限定为指定IP或所有IP。

对于root用户,宝塔面板在“数据库”页面顶部通常有“root密码”入口,点击后可以修改root密码,并在“权限”中设置root是否允许远程访问,同样可以选择“所有人”或指定IP,修改后需要重启数据库服务使配置生效。

使用命令行授权远程账号

如果宝塔面板的图形界面无法完成授权,或者需要更精细的控制,可以通过命令行操作,具体步骤如下:

  1. 使用SSH登录服务器。

  2. 以root身份登录MySQL:

    mysql-uroot-p
  3. 创建一个专用远程账号,并授予指定数据库权限:

    CREATEUSER'remote_user'@'%'IDENTIFIEDBY'StrongPassword123!';
    GRANTALLPRIVILEGESONdatabase_name.*TO'remote_user'@'%';
    FLUSHPRIVILEGES;

    如果需要授予所有数据库权限,可以将database_name.*替换为。

  4. 如果账号已存在,但主机字段仍为localhost,可以通过以下命令修改:

    UPDATEmysql.userSETHost='%'WHEREUser='remote_user';
    FLUSHPRIVILEGES;

    或使用ALTER语句:

    ALTERUSER'remote_user'@'localhost'IDENTIFIEDBY'StrongPassword123!';
    RENAMEUSER'remote_user'@'localhost'TO'remote_user'@'%';
    FLUSHPRIVILEGES;

MySQL 5.7和MySQL 8.0在用户创建和授权语法上略有差异,MySQL 8.0推荐使用CREATE USERGRANT分离的方式,并且密码插件默认为caching_sha2_password,可能与旧版客户端存在兼容问题,如果遇到连接后提示认证插件错误,可以在创建用户时指定使用mysql_native_password:

CREATEUSER'remote_user'@'%'IDENTIFIEDWITHmysql_native_passwordBY'StrongPassword123!';

修改数据库监听地址

即使完成了用户授权,如果MySQL服务只监听127.0.0.1,外部客户端依然无法连接,需要检查MySQL配置文件,宝塔面板安装的MySQL配置文件通常位于/etc/my.cnf/etc/mysql/my.cnf,也可以在面板的软件商店 -> MySQL -> 配置修改中直接编辑。

找到以下配置项:

bind-address=127.0.0.1

将其修改为:

bind-address=0.0.0.0

或直接注释掉该行:

#bind-address=127.0.0.1

修改后需要重启MySQL服务:

systemctlrestartmysqld

/etc/init.d/mysqldrestart

部分MariaDB版本对应服务名为mariadb,需要根据实际情况调整。

放行服务器防火墙与云安全组

默认情况下,服务器的系统防火墙以及云服务商的安全组都不会放行3306端口,即使数据库配置全部正确,如果端口被拦截,客户端只会得到“连接超时”或“无法连接到主机”的错误。

在宝塔面板中,进入“安全”页面,检查“防火墙”规则是否已经放行3306端口,如果没有,可以点击“添加端口规则”,填写端口3306,协议选择TCP,来源可以填写“所有IP”或只填写允许访问的IP地址,保存后规则立即生效。

如果服务器使用云服务商,如阿里云、腾讯云、华为云,还需要登录云控制台,找到对应实例的安全组设置,添加入方向规则:协议类型选择TCP,端口范围填写3306/3306,授权对象填写允许访问的IP或0.0.0.0/0,安全组规则修改后通常立即生效,无需重启服务器。

如果使用系统防火墙firewalld,可以通过以下命令放行:

firewall-cmd--permanent--add-port=3306/tcp
firewall-cmd--reload

如果使用iptables或ufw,需要根据具体工具添加规则。

测试远程连接

完成以上配置后,可以在本地电脑上使用数据库客户端工具进行测试,常见工具有Navicat、DBeaver、MySQL Workbench、HeidiSQL等,也可以使用命令行客户端:

mysql-h服务器公网IP-P3306-uremote_user-p

输入密码后,如果能够看到MySQL的命令行提示符,说明远程访问已经成功。

如果连接失败,需要根据错误提示逐步排查,错误代码2003通常表示网络无法到达数据库服务,需要检查监听地址、防火墙和安全组,错误代码1045表示账号或密码错误,或者用户没有从当前主机连接的权限,错误代码1130表示主机不允许连接,需要修改用户Host字段,错误代码10060或10038同样与网络拦截有关。

远程访问数据库的安全建议

远程访问数据库会直接暴露数据库服务到公网,安全风险远高于仅本地访问,如果必须远程访问,建议遵循以下安全实践:

  1. 使用专用账号:不要开放root账号的远程权限,为每个应用或开发者创建独立账号,并仅授予所需数据库的最小权限,例如只授予SELECT、INSERT、UPDATE、DELETE权限,不授予DROP、ALTER等结构修改权限。

  2. 限制来源IP:在授权时尽量使用指定IP或IP段,例如'remote_user'@'203.0.113.15',而不是使用“%”允许所有IP,在防火墙和安全组中也只放行固定来源IP。

  3. 修改默认端口:将MySQL默认的3306端口修改为其他不常用端口,例如33060或23306,可以在MySQL配置文件中修改port参数,并在宝塔面板和安全组中同步放行新端口,修改端口可以减少自动化扫描和暴力免费的概率。

  4. 使用强密码:密码长度建议在12位以上,包含大小写字母、数字和特殊符号,避免使用常见密码或与用户名相同。

  5. 开启SSL加密:如果客户端支持,可以在MySQL中启用SSL,强制远程连接使用加密传输,防止数据在公网上被窃听,配置SSL需要生成证书并修改MySQL配置文件,同时客户端需要指定SSL参数。

  6. 定期审计与监控:定期查看MySQL的错误日志和慢查询日志,检查是否存在异常登录尝试,宝塔面板的“日志”功能可以查看数据库日志,也可以通过SQL查询mysql.user表检查用户Host字段是否出现意外的“%”。

  7. 及时更新版本:保持宝塔面板和MySQL/MariaDB版本为最新,及时修复已知安全漏洞。

常见连接错误及处理方法

  • 错误2003 - Can't connect to MySQL server on 'x.x.x.x'原因通常是MySQL未监听公网IP或端口被防火墙拦截,检查bind-address配置是否为0.0.0.0或已注释,确认端口3306在宝塔安全页面和云安全组中已放行。

  • 错误1045 - Access denied for user 'user'@'host'说明客户端已经到达MySQL服务,但用户认证失败,检查用户名、密码是否正确,检查用户Host字段是否允许当前客户端IP,可以使用SELECT user, host FROM mysql.user;查看。

  • 错误1130 - Host 'x.x.x.x' is not allowed to connect to this MySQL server表示用户存在但Host字段没有包含客户端IP,需要将用户Host修改为客户端IP或“%”,然后执行FLUSH PRIVILEGES;

  • 错误10060/10038 - 连接超时或被拒绝通常是网络层面的问题,需要检查云安全组、系统防火墙、宝塔面板安全规则是否放行数据库端口。

  • 认证插件错误 - Authentication plugin 'caching_sha2_password' cannot be loadedMySQL 8.0默认使用caching_sha2_password插件,旧版本客户端可能不支持,可以改用mysql_native_password插件创建用户,或升级客户端到支持新插件的版本。

0