首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接受远程连接的MySQL数据库,但不接受来自PHP的连接

问接受远程连接的MySQL数据库,但不接受来自PHP的连接
EN

Stack Overflow用户
提问于 2015-03-18 14:58:32
回答 1查看 1.1K关注 0票数 0

因此,我在专用服务器上设置了一个MySQL服务器。我试图用这个PHP脚本连接到它。

代码语言:javascript
复制
<?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";
?>

是的,我的脚本中的*被正确的信息替换了。

由于此错误,连接被拒绝。

代码语言:javascript
复制
Connection failed: Can't connect to MySQL server on '66.45.230.186' (111)

所以我从另一个主机上试了一下,我用了http://www.rainbowspuppiessunshine.com/tools/dbtest/index.php

从这里我也得到了一个错误:

代码语言:javascript
复制
Lost connection to MySQL server at 'reading initial communication packet', system error: 111

因此,我尝试从我的VPS连接到MySQL。我在上面安装了MySQL,并通过用户“根”和“蒸汽”建立了连接,并且能够访问我的数据库并通过它们添加表。

VPS是由与我的专用服务器(运行我的MySQL服务器)相同的主机托管的,所以我想,也许是因为它位于同一个局域网上,这可能就是它允许连接的原因。因此,我决定在本地计算机( MySQL 9.1)上安装一个HeidiSQL客户端。我能够从本地机器(离我的专用服务器500英里)与那个客户端建立连接。

因此,我完全不知道为什么我能够从另一个MySQL客户端远程连接到MySQL,但是我无法通过任何MySQL脚本连接到它。我真的不知道有多大的区别。

MySQL服务器是一个新安装(除了为远程连接设置权限和添加两个表的数据库之外)。它在Ubuntu 14.04上运行

代码语言:javascript
复制
+------------------+-------------------------------------------+---------------+
| 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。

EN

回答 1

Stack Overflow用户

发布于 2015-03-18 15:43:30

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

代码语言:javascript
复制
<?php
 echo phpinfo();
?>

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

​

如果没有,请重新安装php mysql支持,在您的情况下使用apt命令来安装它们。

其次,请登录mysql并检查远程连接状态。

代码语言:javascript
复制
// 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等),请更改为任何客户端可以连接它。假设您的数据库连接信息如下

代码语言:javascript
复制
database  demo
user  demo
password demo
//execute the sql to change
grant all on demo.* to demo@'%' identified by 'demo';
flush privileges;

完成上述步骤后,请再次尝试从php连接mysql。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29125406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档