[英]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.