【问题标题】:Problem connecting to external mysql database连接到外部mysql数据库的问题
【发布时间】:2010-10-06 23:01:36
【问题描述】:

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

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

这是错误:

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

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

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

【问题讨论】:

  • 引用的命令文本是逐字记录的吗?因为 -p 开关和密码之间没有空格...
  • -p 后面不应该有空格。原因是如果您省略密码,它会提示它,因此执行例如。 mysql -u username -p db 不会将“db”解释为密码,而是解释为要使用的数据库,它会提示密码。
  • 我认为 -p 选项和密码之间不应该有空格。是的,这就是我输入命令的方式。我只是替换了实际值。

标签: mysql mysql-error-1044


【解决方案1】:

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

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

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

【讨论】:

  • 我无法控制我们尝试连接的外部服务器,因为它由我们办公室聘请来构建我们网站的另一家网络开发公司托管。话虽如此,我只能向他们提出建议。如果我只需要读取(SELECT)权限,我该怎么做?我假设 SELECT 权限足以被 mysql 允许?无论如何,我只是从他们的数据库中读取数据。
  • 为此你会做GRANT SELECT ON ...
【解决方案2】:

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

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

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

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

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

另外——一旦你投入生产,并将你的代码移动到另一台服务器,IP 的乐趣就会再次开始。你不妨马上解决这个问题

【讨论】:

    猜你喜欢
    • 2016-05-30
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 2019-03-09
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    相关资源
    最近更新 更多