所以我在专用服务器上设置MySQL服务器。我尝试使用这个PHP脚本连接到它。
<?php
$servername = "******";
$username = "******";
$password = "******";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
是的,我的脚本中的*****被替换为正确的信息。
此错误拒绝了连接
Connection failed: Can't connect to MySQL server on '66.45.230.186' (111)
所以我从其他主机尝试过,我使用了http://www.rainbowspuppiessunshine.com/tools/dbtest/index.php
从这里我也遇到了错误:
Lost connection to MySQL server at 'reading initial communication packet', system error: 111
所以我尝试从我的VPS连接到MySQL。我在其上安装了MySQL并通过用户“root”和“steam”建立了连接,并且能够访问我的数据库并通过它添加表。
VPS由与我的专用服务器(运行我的MySQL服务器)相同的主机托管,所以我想也许因为它在同一个局域网上可能是它允许连接的原因。所以我决定在我的本地机器上安装一个MySQL客户端(HeidiSQL 9.1)。我能够从我的本地机器(距离我的专用服务器500英里)与该客户端建立连接
所以我绝对不知道为什么我能够从另一个MySQL客户端远程连接到MySQL,但我无法通过任何PHP脚本连接到它。我真的不知道有太大的不同。
MySQL服务器是全新安装(除了为远程连接设置权限和添加带有两个表的数据库)。它在Ubuntu 14.04上运行
+------------------+-------------------------------------------+---------------+
| user | password | host |
+------------------+-------------------------------------------+---------------+
| root | *367201834FD28DD7137E8947B4E1A1F5CAC4BBB4 | localhost |
| root | *367201834FD28DD7137E8947B4E1A1F5CAC4BBB4 | myserver |
| root | *367201834FD28DD7137E8947B4E1A1F5CAC4BBB4 | 127.0.0.1 |
| root | *367201834FD28DD7137E8947B4E1A1F5CAC4BBB4 | ::1 |
| debian-sys-maint | *AA9A40B349EDF9989A118FEFCF255353033F4A6D | localhost |
| steam | *367201834FD28DD7137E8947B4E1A1F5CAC4BBB4 | **.**.***.*** |
| steam | *367201834FD28DD7137E8947B4E1A1F5CAC4BBB4 | % |
| root | *367201834FD28DD7137E8947B4E1A1F5CAC4BBB4 | % |
+------------------+-------------------------------------------+---------------+
编辑。。 。 以隐藏IP
答案 0 :(得分:0)
首先,请检查php中的mysql和mysqli支持。在您的Web位置创建index.php(/ var / www / html),以下是文件内容。
<?php
echo phpinfo();
?>
在Web浏览器(http://localhost/index.php)上访问index.php并检查mysql和mysqli项是否存在。
如果没有,请重新安装php mysql支持,在你的情况下使用apt-get命令安装它们。
其次,请登录您的mysql并检查远程连接状态。
// in command line
mysql -u your user -p your password
// execute following sql
select user,password,host from mysql.user;
以下是结果
然后请检查主机列,如果此列值是特定的ip或主机名(localhost,192.168.xxx.xxx等),请更改为任何客户端都可以连接它。 假设您的数据库连接信息如下
database demo
user demo
password demo
//execute the sql to change
grant all on demo.* to demo@'%' identified by 'demo';
flush privileges;
完成上述步骤后,请再次尝试从php连接mysql。