我正在尝试连接到远程服务器,因此我运行此测试脚本:
=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";
它没有尝试连接到远程服务器,尝试连接到我的本地服务器,有人知道为什么吗?
答案 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替换为客户端所连接的地址或子网。