0

我的问题是,当我尝试从我们的服务器连接到另一台外部服务器时,此命令会产生错误:

mysql -h db.hostname.com -u username -pP@ssword database_name

这是错误:

错误 1044 (42000): 拒绝用户 'username'@'%' 对数据库 'database_name' 的访问

我已经要求外部服务器管理员在他们的防火墙中添加我们的 IP 但无济于事..

这与授予“用户名”权限有关

4

2 回答 2

1

这不是防火墙的问题,因为 MySQL拒绝连接。正如您所怀疑的,这是授予用户权限的问题。您需要在 mysql 服务器上执行此操作(如果您不想将所有权限授予 db,则可能需要稍微调整一下):

GRANT ALL ON database_name.* TO 'username'@'%' IDENTIFIED BY 'P@ssword';

另请注意,如果您始终从特定主机/IP 连接,最好指定该主机/IP,而不是使用%允许从任何地方连接的通配符。

于 2010-10-06T23:13:41.603 回答
0

听起来密码错误,或者您尝试使用的用户名不允许从您计算机的 IP 地址连接。

如您所知,远程站点的 mysql 管理员可以指定允许使用任何给定用户帐户连接的 IP。请记住,在您到达外部数据库之前,您的计算机的 IP 地址可能会通过公司端的各种路由器和防火墙进行路由。因此,您的 IP 在您看来可能与外部数据库不同。在这种情况下,如果外部数据库管理员将您的 IP 添加到“允许”列表中并没有帮助,他们应该添加“外部世界”IP 地址。

找出这是否适用于您的最简单方法如下:访问 www.whatismyip.com 并在屏幕上写下 IP 地址。这是从“外部世界”看到的您的 IP。这个 IP 很可能实际上是您公司网络中防火墙或路由器的外部 IP,而不是您计算机的 IP。

接下来,(假设您在 Windows 上)转到“开始”>“运行”。键入 cmd 并按回车键。输入 ipconfig 并回车。您现在可以看到您的本地 IP 地址。

如果这两个 IP 不匹配,请告诉远程管理员将您的外部 IP 也添加到“允许”列表中。

另外——一旦你投入生产,并将你的代码移动到另一台服务器,IP 乐趣又开始了。您不妨立即解决此问题

于 2011-02-16T13:43:22.040 回答