MySQL数据库接受远程连接,但不接受PHP

时间:2015-03-18 14:58:32

标签: php mysql sql database ubuntu

所以我在专用服务器上设置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

1 个答案:

答案 0 :(得分:0)

首先,请检查php中的mysql和mysqli支持。在您的Web位置创建index.php(/ var / www / html),以下是文件内容。

<?php
 echo phpinfo();
?>

在Web浏览器(http://localhost/index.php)上访问index.php并检查mysql和mysqli项是否存在。  enter image description here

如果没有,请重新安装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;

以下是结果 enter image description here

然后请检查主机列,如果此列值是特定的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。