【发布时间】:2020-01-09 20:56:54
【问题描述】:
我正在“server1”上进行开发。 我需要将此服务器上处理的数据保存到“server1”数据库中。 但是,我还需要将一些数据保存到外部“server2”数据库中。
问题是当我连接到另一台服务器的数据库时,我得到了一个相当奇怪的错误。
错误代码:1045
错误消息:拒绝用户“server2-username”@“server1-name”访问(使用密码:YES)
为什么错误信息中会出现“server1”?
对我来说,消息是这样说的:“嘿,我在 'server1' 数据库上找不到 'server2-username'”。我对么?当我连接到“server2”时,为什么会这样说?
$connection = new mysqli('server2-ip', 'server2-username', 'server2-password', 'server2-database');
if($connection->connect_errno) {
echo $connection->connect_errno;
echo $connection->connect_error;
}
知道我应该如何连接到“server2”吗?或者我应该检查什么?
这是我第一次想连接到另一个服务器数据库。我还没做过,也不知道怎么回事。
【问题讨论】:
-
您是否使用变量进行连接?如果是这样:您是否尝试输出这些以检查它们是否包含正确的值?
-
不,我没有使用变量。
-
“为什么 'server1' 出现在错误消息中”...因为那是您连接到数据库的 from 机器。它不是数据库服务器的名称。在 MySQL 中,您可以拥有相同的用户名但后缀不同的主机名,并且如果您希望他们可以被视为具有不同权限的单独用户。您必须使用户能够从您想要允许的所有不同主机名进行连接(或者您可以将其设置为全部允许)。我建议你阅读dev.mysql.com/doc/refman/8.0/en/account-names.html
-
这篇文章有一个关于指定不同主机名(或IP地址)的简单实例:linuxize.com/post/…
-
是的,他们需要为您的特定用户名启用它,并确保它具有与从 server2 本地连接时相同的权限。