无法使用mysql中的已创建用户登录

时间:2009-09-11 17:44:04

标签: mysql mysql-error-1045

使用此命令

GRANT ALL PRIVILEGES ON *.* to 'brian'@'%' identified by 'password';

我尝试使用以下方式登录:

 mysql -u brian -ppassword

错误是:

ERROR 1045 (28000): Access denied for user 'brian'@'localhost' (using password: YES)

我是以root身份执行此操作,但我尝试刷新权限。

我尝试过无数用户,但似乎没有用。我可以创建一个没有密码和登录工作的用户。命令行和来自phpmyadmin

还要检查用户是否在mysql.user中。

显示布里安节目的赠款:

| GRANT ALL PRIVILEGES ON *.* TO 'brian'@'%' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' |

14 个答案:

答案 0 :(得分:172)

你可能有这个永久的MySQL问题,其中用户表中的一个默认用户是'' @ localhost,这最终会在表中拒绝所有localhost用户。我要做的是mysqldump mysql数据库,并在User表中查找此条目;如果找到,删除它并刷新权限。

有关详细信息,请参阅https://dev.mysql.com/doc/refman/5.5/en/connection-access.html

  

一种常见的误解是,对于给定的用户名,当服务器尝试查找连接匹配时,首先使用显式命名该用户的所有行。这不是真的。上面的示例说明了这一点,其中来自h1.example.net的jeffrey连接首先不是由包含'jeffrey'作为User列值的行匹配,而是由没有用户名的行匹配。 因此,jeffrey被认证为匿名用户,即使他在连接时指定了用户名。

答案 1 :(得分:41)

这是匿名用户造成的问题。 一旦我安装MySQL,我总是运行

shell> mysql_secure_installation 

并选择设置/更改root密码,删除匿名用户,禁止远程root登录,删除测试数据库。这将删除匿名用户并保护您的安装。它也应该解决你的问题。

答案 2 :(得分:21)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

答案 3 :(得分:10)

此处提供的解决方案均无效。经过大量的错误和试验,我意识到我的密码中有特殊字符。更改密码没有特殊字符解决了问题

答案 4 :(得分:3)

mysql文档有这样的说法: (来自http://dev.mysql.com/doc/refman/5.1/en/adding-users.html):

  

其中两个帐户的用户名为monty,密码为some_pass。这两个帐户都是具有完全权限的超级用户帐户。仅当从本地主机进行连接时,才能使用'monty'@'localhost'帐户。 'monty'@'%'帐户使用'%'通配符作为主机部分,因此可用于从任何主机进行连接。

     

必须让monty的两个帐户都可以从monty开始连接。如果没有localhost帐户,由mysql_install_db创建的localhost的匿名用户帐户将优先于monty从   当地主持人。因此,monty将被视为匿名用户。原因是匿名用户帐户的列值比Host帐户更具体'monty'@'%',因此在用户表排序顺序中更早出现。

考虑到这一点,我建议您创建一个具有相同权限的'brian'@'localhost'用户。

答案 5 :(得分:2)

您在授权声明中忘记了brian周围的引号。试试这样:

GRANT ALL PRIVILEGES ON *.* to 'brian'@'%' identified by 'password';

答案 6 :(得分:2)

我认为'拉塞尔席尔瓦'是对的......

我通过

创建了一个用户
CREATE USER 'username'@'%' PASSWORD='userpassword';

但我无法登录此帐户。控制台告诉我

ERROR 1045 (28000): Access denied for user 'username'@'localhost' (using password: YES)

所以我创建了一个具有相同用户名的用户,除了将'%'更改为'localhost',我最终可以以'username'身份登录。这对我来说很奇怪。

答案 7 :(得分:2)

我刚创建了一个帐户,为未来的搜索者提供了另一种可能性:

对于有经验的用户来说,这可能是显而易见的,但我的密码是随机生成的,并且包含一个" \"。花了我一会儿,直到我发现那个角色似乎导致了问题,导致我无法登录。

答案 8 :(得分:1)

在我的情况下,这是由于我点击“SSL:REQUIRE SSL”(在phpmyadmin中)。当我将其更改为“REQUIRE NONE”时,我可以登录。

答案 9 :(得分:0)

您也可以从其他主机连接,然后绕过localhost匿名用户,您可以将其删除并刷新权限:

mysql -u brian -ppassword -h 'other_host_than_localhost'

答案 10 :(得分:0)

在尝试连接到升级到17.04后在Ubuntu上运行的Maria DB时,我遇到了类似的问题。

默认设置是仅在localhost,127.0.0.1上侦听。

要使MySQL / Maria侦听所有可用的端口和接口,我需要明确指定bind-address = 0.0.0.0。我将这一行添加到文件/etc/mysql/my.cnf的末尾,即

...
[client-server]

# Import all .cnf files from configuration directory

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/
bind-address=0.0.0.0

则...

sudo /etc/init.d/mysql restart 

答案 11 :(得分:0)

使用以下命令更改为本地密码:

ALTER USER 'username'@'hostname' IDENTIFIED WITH mysql_native_password BY 'password';

答案 12 :(得分:0)

最后这对我有用:

MariaDB [(none)]> drop user ''@'localhost';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

答案 13 :(得分:-1)

即使在验证我没有输入错误的密码后,我也发生了类似的问题,我无法登录。 以下两个步骤解决了我的问题。

  1. 删除测试数据库
  2. 删除匿名用户