我正在尝试使用Apple上的终端(使用PHP)连接到我的MySQL数据库.
昨天它工作正常,现在我突然得到标题中的错误.
当我使用浏览器运行它时(我安装了XAMPP),脚本可以工作,但终端拒绝连接到数据库.
这是我包含连接的文件(当我不包含此脚本时脚本工作,但它不连接到DB):
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("FNB1C_data") or die(mysql_error());
?>
Run Code Online (Sandbox Code Playgroud)
这应该工作,因为它适用于我的浏览器.
我在终端使用的命令是php scriptname.php.
我一直试图在过去12小时内设置mysql和phpMyAdmin,但没有任何成功.是的,经过几个小时的Google-ing后,我知道这是一个常见的问题,我在stackoverflow上读过类似的查询,但仍然无法提供解决方案.....
我已经尝试了一切 - 从改变
$cfg['Servers'][$i]['port']
Run Code Online (Sandbox Code Playgroud)
在config.inc.php文件中3306,127.0.0.1....
在config.inc.php文件中键入套接字路径- 两者 tmp/mysql.php和/var/mysql/mysql.sock.
我已经尝试更改my.cnf文件和php.ini中的套接字路径....但我一直得到同样的错误:
#2002 - No such file or directory
The server is not responding (or the local server's socket is not correctly configured).
Run Code Online (Sandbox Code Playgroud)
我正在使用MySQL(5.1.65),PhpMyAdmin(3.5.2.2)和PHP(5.3.8).
我正在尝试使用PDO连接到外部数据库.
$dbh = new PDO('mysql:host=hotsname;port=3309;dbname=dbname', 'root', 'root');
Run Code Online (Sandbox Code Playgroud)
但是,这不适用于我拥有的特定服务器.
我想也许只允许某个主机,但我检查了mysql规则,并在我个人的服务器上尝试了这个代码并且连接正常.
所以我知道代码工作,并且他们不在我身边,并且防火墙正在接受对端口3309的请求并将其传递到端口3306上的正确服务器.
所以问题完全在一台服务器上.作为测试,我以为我打开端口3306来测试代码而不指定端口.
$dbh = new PDO('mysql:host=hotsname;dbname=dbname', 'root', 'root');
Run Code Online (Sandbox Code Playgroud)
这很直接.
所以我的问题是,为什么在添加端口时这会导致它无法连接到数据库.只有这个特定的服务器才有这个问题.
非常感谢您的时间.
更新
给出的错误只是"无法连接到xxx.xxx.xxx.xxx上的mysql服务器".
我现在稍微进一步了.代码现在正在工作,前提是我有一个防火墙规则允许使用3306在3306上传入服务器.所以,即使我已经指定了一个端口,它似乎忽略了这一点,并迫使它超出3306.