外部网站无法连接Synology NAS上的MariaDB数据库求助
排查步骤与解决方案
1. 确认Synology数据库服务状态
打开群晖DSM,进入控制面板 > 应用程序 > MariaDB/MySQL,确保服务处于运行中状态。若未启动,点击启动并设置「开机自动启动」。
2. 修正数据库连接参数
核对connection.php中的核心参数,Synology环境下有特殊注意点:
- 主机地址:不要用
localhost,改用群晖局域网IP(如192.168.1.100)或127.0.0.1(同NAS内网站),避免PHP走socket连接失败。 - 端口号:默认MariaDB端口为
3306,若自定义过端口需对应填写。 - 账号密码:使用数据库授权账号(非DSM管理员账号),可在DSM的MariaDB面板创建专用用户并分配权限。
示例正确PDO连接代码:
try { $pdo = new PDO('mysql:host=192.168.1.100;port=3306;dbname=gd_server;charset=utf8mb4', 'gd_user', 'your_db_password'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { die("Connection failed: " . $e->getMessage()); }
3. 检查数据库用户访问权限
- 在DSM的MariaDB管理界面(或phpMyAdmin),修改用户的主机权限:默认新用户仅允许
localhost访问,需改为%(允许任意IP)或指定中转网站的IP(同NAS内则设为127.0.0.1)。 - 确保该用户拥有目标GD数据库的
SELECT、INSERT等必要操作权限。
4. 放行NAS防火墙端口
进入DSM控制面板 > 安全 > 防火墙,确认3306端口(或自定义数据库端口)已添加放行规则,允许中转网站所在IP访问;若中转网站在NAS自身,需确保本地回环访问不受限制。
5. 验证Web Station的PHP扩展
- 打开DSM
Web Station > 脚本语言设置,确认当前使用的PHP版本已启用pdo_mysql(PDO模式)或mysqli(mysqli模式)扩展。 - 可新建
info.php(内容为<?php phpinfo(); ?>),访问后搜索pdo_mysql确认扩展已加载。
6. 处理prepare()调用错误
该错误是数据库连接失败导致$pdo为null引发的,解决上述连接问题后会自动消失。也可在代码中增加前置判断:
if (!$pdo) { die("Database connection not established"); } $stmt = $pdo->prepare("SELECT ...");
内容的提问来源于stack exchange,提问作者Buage
相关产品推荐
相关产品推荐

