Getting Error SQLSTATE[HY000] [2002] Connection refused on NAS Synology
我正在制作一个正在构建的页面,该页面托管在Synology NAS上。
访问者可以订阅他们的电子邮件,并在该网站何时可用时得到通知。
我无法使用将电子邮件添加到数据库的数据库和PHP代码。
如果服务器名称为
SQLSTATE[HY000] [2002] No such file or directory
当它是
SQLSTATE[HY000] [2002] Connection refused
我在Stackoverflow上找不到解决方案。
此处是PHP代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php $servername ="localhost"; $username ="id"; $password ="password"; $dbname ="dbname"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password ); $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sql ="INSERT INTO email ( email ) VALUES ( '$email' )"; $conn->exec( $sql ); echo"New record created successfully"; } catch( PDOException $e ) { echo $sql ."" . $e->getMessage(); } $conn = null; |
为什么会出现此错误?
我遇到了同样的问题:
1 | SQLSTATE[HY000] [2002] Connection refused |
尝试从php连接到在Synology NAS上运行的MariaDB数据库时。仅提供用户名和密码
1 | $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password ); |
不起作用,虽然指定了端口号,但其他地方都找不到解决方案:
1 | $conn = new PDO("mysql:host=$servername;port=3307;dbname=$dbname", $username, $password ); |
对我有用的是什么:
1 | $conn = new PDO("mysql:host=$servername:3307;dbname=$database", $login, $password); |
从Synology NAS上的主菜单打开MariaDB 10属性窗口时,将找到端口名称。
显然,
我有答案,连接被拒绝,因为我在汉字女巫上安装了mariaDB,将MySQL的默认端口从3306更改为3307。
我有同样的问题。
我最终通过启用与端口3307的TCP / IP连接来解决它。您可以通过在Synology Package Center中打开MariaDB 10选项来做到这一点。
然后代替:
mysqli_connect(" 127.0.0.1 "," root ",",DB_NAME);
我将端口号附加为第五个参数:
mysqli_connect(" 127.0.0.1 "," root ",",DB_NAME,3307);
为我修复的问题。
转到Synology Apps> MariaDB
确保在端口3306上方启用了"启用TCP / IP连接"。
记下域套接字:/run/mysqld/mysqld10.sock
以及上面的评论。
在网站> PHP设置>编辑>核心选项卡中
搜索>套接字
将域套接字示例/run/mysqld/mysqld10.sock输入到default_sockets
遇到了同样的问题,这就是我的解决方法。
我正在DSM 6.2.2-24922 Synology Diskstation上运行,我使用Nginx,PHP 5.6和MariaDB 10(和phpmyadmin)安装了Webstation。
我发现的解决方法是首先在php配置中激活pdo_mysql扩展。
然后在"核心"选项卡中查找pdo_mysql.default_socket。
默认情况下,我有
1 |
,但是我用
1 | /run/mysqldmysql10.sock |
更改了它,我在mariadb10属性中找到了它。
它对我来说非常糟糕,所以我希望它也会对其他人有所帮助:)