需配置远程数据库访问:一、修改MySQL绑定地址为0.0.0.0并授权远程用户;二、防火墙放行3306端口;三、宝塔网站配置中将DB_HOST改为远程IP;四、可选启用SSL加密;五、测试读写功能及连接状态。

如果您在宝塔面板中部署的网站需要连接位于其他服务器上的数据库,并实现正常读写操作,则需绕过本地数据库限制,配置远程访问权限与安全通信机制。以下是实现此目标的具体步骤:
一、开放远程数据库访问权限
MySQL/MariaDB 默认仅监听本地回环地址(127.0.0.1),必须修改绑定地址并授权远程用户,才能接受来自宝塔所在服务器的连接请求。
1、登录数据库服务器,编辑 MySQL 配置文件:/etc/my.cnf 或 /etc/mysql/mariadb.conf.d/50-server.cnf。
2、找到 bind-address 行,将其值改为 0.0.0.0 或注释掉该行。
3、保存配置后,重启数据库服务:systemctl restart mysqld(CentOS)或 systemctl restart mariadb(Ubuntu/Debian)。
4、登录 MySQL,执行授权命令:GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'%' IDENTIFIED BY 'password';
5、刷新权限:FLUSH PRIVILEGES;
二、配置防火墙放行数据库端口
数据库服务器的防火墙可能拦截外部连接,需明确允许目标端口(默认为 3306)的入站流量。
1、若使用 firewalld,执行:firewall-cmd --permanent --add-port=3306/tcp。
2、重载防火墙规则:firewall-cmd --reload。
3、若使用 ufw,执行:ufw allow 3306,随后运行 ufw reload。
4、验证端口是否可达:在宝塔服务器上执行 telnet remote_db_ip 3306,成功建立连接即表示放行有效。
三、在宝塔网站配置中修改数据库连接参数
网站程序需通过实际远程 IP 和端口连接数据库,而非本地 socket 或 127.0.0.1,因此须更新程序配置文件中的数据库主机地址与凭据。
1、进入宝塔面板 → 网站 → 找到对应站点 → 点击“设置” → “配置文件”或直接进入网站根目录编辑配置文件(如 WordPress 的 wp-config.php,ThinkPHP 的 database.php)。
2、将 DB_HOST 值由 localhost 或 127.0.0.1 改为远程数据库服务器的公网或内网 IP 地址。
3、确认 DB_PORT 设置为远程数据库实际监听端口(非默认值时需显式指定)。
4、确保 DB_USER 与 DB_PASSWORD 与远程授权用户完全一致。
四、启用 SSL 加密连接(可选但推荐)
明文传输数据库凭据和查询内容存在泄露风险,启用 TLS 可保障异地通信过程中的数据机密性与完整性。
1、在远程数据库服务器上生成或部署有效的 SSL 证书(含 ca.pem、server-cert.pem、server-key.pem)。
2、修改 MySQL 配置,添加 SSL 相关参数:ssl-ca=/path/to/ca.pem、ssl-cert=/path/to/server-cert.pem、ssl-key=/path/to/server-key.pem。
3、重启数据库服务使 SSL 生效,并确认状态:SHOW VARIABLES LIKE '%ssl%'; 返回 YES 表示已启用。
4、在网站程序数据库配置中启用 SSL 模式,例如 PDO 连接字符串追加 ;sslmode=require,或在 MySQLi 中调用 mysqli_ssl_set() 函数。
五、测试异地读写功能
完成上述配置后,需验证网站能否稳定执行 SELECT、INSERT、UPDATE、DELETE 等操作,排除网络延迟、超时或权限粒度不足导致的失败。
1、在网站后台或前台触发一次数据库写入行为(如提交表单、发布文章)。
2、登录远程数据库服务器,执行 SELECT * FROM database_name.table_name ORDER BY id DESC LIMIT 1; 查看新记录是否存在。
3、检查宝塔面板 → 网站 → 日志 → 错误日志,确认无 Connection refused、Access denied 或 Lost connection 类报错。
4、在远程数据库中执行 SHOW PROCESSLIST;,观察是否有来自宝塔服务器 IP 的活跃连接及对应 SQL 状态。










