使用PHP错误连接到远程MySQL
我正在尝试连接到远程服务器,因此运行以下测试脚本:使用PHP错误连接到远程MySQL,php,mysql,Php,Mysql,我正在尝试连接到远程服务器,因此运行以下测试脚本: $servername = "remotedomain.com"; $username = "dbusername"; $password = "dbpassword"; // Create connection $conn = new mysqli($servername, $username, $password); // Check connection if ($conn->connect_error) { die("
$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)
它没有尝试连接到远程服务器,而是尝试连接到我的本地服务器,有人知道原因吗?使用主机的IP/子网而不是域名。也 仔细检查以确保root用户可以从本地主机以外的主机/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。错误消息的含义
mysql> GRANT SELECT, INSERT ON dbname.* TO 'dbusername'@'10.0.0.1';
该错误告诉您试图用于建立连接的帐户没有访问权限。(这可能是由于使用了不正确的值,或者实际上没有访问权限。)修复正在使用的值后,应直接在数据库中检查帐户,并验证它是否确实允许远程连接。(有时默认情况下,它们被设置为允许本地连接。请参见下文。)
此外,数据库帐户与系统/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)
要使用帐户访问设置,您应该查看。您是否为这些域使用共享主机帐户?这看起来像是远程权限问题(因为您的远程帐户不接受与数据库的远程连接)。可能重复的请记住,如果有不清楚的地方,请返回并提问,或者如果对您有用,请接受答复。这对你、那些试图回答你问题的人以及整个社区都有好处。