【问题标题】:ERROR 1045 (28000): Access denied for user (using password: YES)ERROR 1045 (28000): 拒绝用户访问(使用密码:是)
【发布时间】:2017-04-02 12:19:35
【问题描述】:

我试图在一台服务器上拥有一个简单的 mysql 数据库,并在另一台连接到它的服务器上拥有另一个数据库。

我做了以下事情:

  1. 已安装 mysql-server
  2. 创建数据库
  3. 创建用户:

    CREATE USER admin@'localhost' IDENTIFIED BY 'admin';

  4. 赋予该用户权限:

    将 confWeb.* 上的所有权限授予 admin@'';

  5. 打开绑定地址

现在,当我从另一台服务器启动命令 mysql -u admin -p -h <address> 时,它只会一次又一次地告诉我:

ERROR 1045 (28000): Access denied for user 'admin'@'X.X.X.X' (using password: YES)

我现在真的不知道该怎么办。我想我什么都试过了。 我尝试将GRANT OPTION 放在 GRANT 行的末尾,我尝试允许许多不同的地址,但没有任何效果。

【问题讨论】:

  • 您创建了一个绑定到 localhost 的用户,但您连接到的服务器不是 localhost。

标签: mysql mysqlconnection


【解决方案1】:

使用以下步骤:-

  CREATE USER 'user name'@'IP or % or localhost' IDENTIFIED BY 'password';

  GRANT all privileges ON *.* TO 'user name'@'IP or % or localhost' IDENTIFIED BY 'password' ;
  flush privileges;

这里是“IP”的地方;您在要连接服务器的地方使用远程服务器 ip。您还可以使用“%”用于世界上任何 plcae 的使用数据库。

现在,在授予选项中;在“所有权限”的位置,您可以单独授予访问权限,例如选择、更改、更新等。

【讨论】:

    【解决方案2】:

    在 MySQL 中,用户由 userhost 标识。

    此用户:

     admin@localhost
    

    不是

    相同的用户
     admin@'10.242.167.235'
    

    作为一种选择,您可以这样做以允许连接:

      GRANT USAGE ON *.* TO admin@'10.242.167.235' IDENTIFIED BY 'mysecret' ;
      GRANT ALL ON confWeb.* TO admin@'10.242.167.235' ;
    

    关于 MySQL 访问权限系统的更长讨论,包括“通配符”、localhost 的特殊含义、使用 IP 地址而不是主机名等。

    http://dev.mysql.com/doc/refman/5.7/en/privilege-system.html

    【讨论】:

    • 我认为您的回答可能对我写的内容有好处,但是我尝试按照您说的做,但仍然没有用。不过我找到了解决办法,我会贴出来的。
    • 显然和admin不一样:dba.stackexchange.com/questions/191606/…
    • @pyb:正确。 MySQL 帐户由 userhost 标识。根据 MySQL 参考手册:“帐户名称的 host 名称部分,如果省略,则默认为 '%'。” dev.mysql.com/doc/refman/5.7/en/create-user.html 所以指定“just admin”与指定admin@'%' 相同。
    【解决方案3】:

    我真的不知道为什么,但显然,当我使用with grant option 并首先访问数据库,然后访问它的表时,它起作用了。 这是我输入的命令列表:

    mysql> create user 'admin'@'localhost' identified by 'admin';
    mysql> grant all privileges on confWeb to 'admin'@'10.69.101.%' identified by 'admin' with grant option;
    mysql> grant all privileges on confWeb.* to 'admin'@'10.69.101.%' identified by 'admin' with grant option;
    mysql> flush privileges;
    

    再次,我真的不知道为什么它以前不起作用,我看到的答案看起来像我看到的所有文档,但看起来我的问题出在其他地方。

    【讨论】:

    • 'admin'@'localhost' 是与'admin'@'10.69.101.%' 完全不同的用户。这些用户都不会是来自10.242.167.235 的连接的“匹配”。如果从10.242.167.235 建立连接,则此答案中显示的语句定义的两个用户中的 没有一个 有任何区别。 dev.mysql.com/doc/refman/5.7/en/account-names.html
    猜你喜欢
    • 2013-10-13
    • 2019-05-26
    • 2019-12-12
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 2017-11-07
    • 1970-01-01
    相关资源
    最近更新 更多