MySQL-错误1045(28000):用户被拒绝访问


9

我刚刚在新计算机上安装了Ubuntu 10.04.2 LTS的新副本。我以root身份登录MySQL:

david@server1:~$ mysql -u root -p123

我创建了一个名为repl的新用户。我将主机保留为空白,因此新用户可以从任何位置访问。

mysql> CREATE USER 'repl' IDENTIFIED BY '123';
Query OK, 0 rows affected (0.00 sec)

我检查了用户表以验证是否正确创建了新用户repl。

mysql> select host, user, password from mysql.user;
+-----------+------------------+-------------------------------------------+
| host      | user             | password                                  |
+-----------+------------------+-------------------------------------------+
| localhost | root             | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| server1   | root             | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| 127.0.0.1 | root             | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| ::1       | root             | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| localhost |                  |                                           |
| server1   |                  |                                           |
| localhost | debian-sys-maint | *27F00A6BAAE5070BCEF92DF91805028725C30188 |
| %         | repl             | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+-----------+------------------+-------------------------------------------+
8 rows in set (0.00 sec)

然后我退出,尝试以用户repl身份登录,但是访问被拒绝。

david@server1:~$ mysql -u repl -p123
ERROR 1045 (28000): Access denied for user 'repl'@'localhost' (using password: YES)
david@server1:~$ mysql -urepl -p123
ERROR 1045 (28000): Access denied for user 'repl'@'localhost' (using password: YES)
david@server1:~$ 

为什么拒绝访问?


我只是尝试删除用户并使用主机localhost创建,并且此方法有效。创建用户'repl'@'localhost'由'123'标识;但是我不想将用户限制在某个主机上,我希望拥有任何主机。
davidjhp

Answers:


5

您无法登录的原因repl@'%'MySQL的用户身份验证协议有关。它没有涵盖人们所相信的用户模式。

查看您如何尝试登录

mysql -u repl -p123

由于您未指定IP地址,因此mysql假定主机为localhost并尝试通过套接字文件进行连接。这就是错误消息说的原因Access denied for user 'repl'@'localhost' (using password: YES)

人们会认为repl@'%'会允许的repl@localhost。根据MySQL执行用户身份验证的方式,这将永远不会发生。这样做会有帮助吗?

mysql -u repl -p123 -h127.0.0.1

信不信由你,mysql会repl@localhost再次尝试。为什么?mysql客户端看到127.0.0.1并再次尝试套接字文件。

像这样尝试:

mysql -u repl -p123 -h127.0.0.1 --protocol=tcp

这将强制mysql客户端显式使用TCP / IP协议。这样,除了用户之外别无选择repl@'%'


4

您应该为特定于它的本地主机发出命令。

  GRANT USAGE ON *.* TO 'repl'@'localhost' IDENTIFIED BY '123';

并尝试连接。


1

问题是这两个帐户是默认添加的。

http://dev.mysql.com/doc/refman/5.5/en/default-privileges.html

+-----------+------------------+-------------------------------------------+
| host      | user             | password                                  |
+-----------+------------------+-------------------------------------------+
| localhost |                  |                                           |
| server1   |                  |                                           |
+-----------+------------------+-------------------------------------------+

空的用户名是通配符,因此,如果MySQL认为您是从本地主机名或本地服务器名(在本例中为server1)连接的,则无论您使用什么帐户,它都与该用户匹配……因为它们没有密码,所以您尝试输入的密码错误。用户身份验证仅尝试第一个匹配项,因此当您的主机为localhost(或服务器名称)时,您创建的用户不会受到注意。

从中删除这两个mysqluser桌子然后FLUSH PRIVILEGES;

或者,尽管我倾向于手动执行操作,但mysql_secure_installation脚本可以为您完成此操作。

http://dev.mysql.com/doc/refman/5.5/en/mysql-secure-installation.html


0

确保使用正确的详细信息设置连接器中的所有字段

host =“ localhost”,用户=“ CorrectUser”,passwd =“ coRrectPasswd”,数据库=“ CorreCTDB”

还要检查大小写错误-1045不是语法错误,但与连接器中的错误详细信息有关


0

数据库可能尚未配置,仅发出no-arg调用即可:

mysql <enter>

Server version: xxx

Copyright (c) xxx

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Mysql [(none)]> 

如果必须为Mysql设置root密码,则可以使用

mysql_secure_installation

-2

这可能是您的mysql数据库损坏的问题。像用户表这样的mysql数据库中的表可能损坏,并可能导致发出。

请检查那些

myisamchk / var / lib / mysql / mysql / * .MYI

通常,在检查或修复myisam表时,我们希望首先删除mysql。如果问题仍然无法解决,请尝试一下。

如果它们已损坏,则可以使用以下方法修复它们

myisamchk-静音--force --fast /path/table-name.MYI

谢谢,

马苏德

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.