繁体   English   中英

使用PHP连接到远程MySQL错误

[英]Connecting to remote MySQL using PHP error

我试图连接到远程服务器,所以我运行以下测试脚本:

$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";

但是,我得到以下响应:

Connection failed: Access denied for user 'dbusername'@'www.mydomain.com' (using password: YES)

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

错误信息的含义

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

而且,数据库的帐户是一样的系统/ OS帐户; 它们独立于操作系统用户帐户,因此也请检查这些帐户。

例如,连接字符串应更像这样: 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文档

使用主机的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';

更换

数据库名称

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM