使用PHP错误连接到远程MySQL

时间:2015-11-22 23:49:17

标签: php mysql

我正在尝试连接到远程服务器,因此我运行此测试脚本:

=REPLACE(A1, 1, SEARCH("name:", A1)+LEN("name:"), "")
=MID(A1, SEARCH("name: ", A1)+LEN("name: "), 99999)

但是,我得到了这样的答复:

$servername = "remotedomain.com";
$username = "dbusername";
$password = "dbpassword";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
echo "Connected successfully";

它没有尝试连接到远程服务器,尝试连接到我的本地服务器,有人知道为什么吗?

2 个答案:

答案 0 :(得分:2)

错误消息的含义

错误告诉您,您尝试用来建立连接的帐户没有访问权限。 (这可能是由于使用了不正确的值,或者实际上没有访问权限。)在修复了您正在使用的值之后,您应该直接在数据库中检查帐户并验证它实际上是否允许远程连接。 (有时它们默认设置为允许本地连接。请参阅下文。)

此外,数据库帐户与系统/操作系统帐户相同;它们独立于操作系统用户帐户,因此也要检查它们。

例如,连接字符串看起来应该更像这样:username@serverhost.domain,没有www部分。

数据库帐户访问确认

这是您应该在数据库端检查以验证您的帐户是否具有远程连接权限:

mysql> use mysql;
Database changed
mysql> select User, Host from user;
+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| ray              | %         |   <<--- allows remote conns; wildcard accepts any host
| root             | 127.0.0.1 |
| root             | ::1       |   <<--- does NOT allow remote conns
| root             | localhost |
+------------------+-----------+
6 rows in set (0.00 sec)

请注意,那些的人拥有%通配符,而是通过名称或IP地址引用本地主机,将收到拒绝访问错误消息。例如:

➜  ~  mysql -h data-hive.local -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'main-hive' (using password: YES)

要使用帐户访问设置,您应该查看MySQL Documentation

答案 1 :(得分:0)

使用主机的IP /子网而不是域名。也 仔细检查以确保root可以从localhost以外的主机/ IP访问。

mysql> use mysql;
mysql> SELECT host FROM user WHERE user = 'dbusername';

您需要为要连接的IP授予权限。

mysql> GRANT SELECT, INSERT ON dbname.* TO 'dbusername'@'10.0.0.1';

替换

  

DBNAME

使用您想要访问的数据库(或放入通配符),然后将IP替换为客户端所连接的地址或子网。