it-swarm.com.de

MySQL - ERROR 1045 (28000): Zugriff für Benutzer verweigert

Ich habe gerade eine neue Kopie von Ubuntu 10.04.2 LTS auf einem neuen Computer installiert. Ich habe mich als root bei MySQL angemeldet:

[email protected]:~$ mysql -u root -p123

Ich habe einen neuen Benutzer namens repl erstellt. Ich habe Host leer gelassen, damit der neue Benutzer von jedem Ort aus darauf zugreifen kann.

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

Ich habe die Benutzertabelle überprüft, um sicherzustellen, dass die neue Benutzerrepl. Ordnungsgemäß erstellt wurde.

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)

Ich beende dann, versuche mich als Benutzerreplikation anzumelden, aber der Zugriff wird verweigert.

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

Warum wird der Zugriff verweigert?

9
davidjhp

Der Grund, warum Sie sich nicht als [email protected]'%' Anmelden konnten, hat mit MySQLs Benutzerauthentifizierungsprotokoll zu tun. Es werden keine Benutzermuster behandelt, wie man glauben würde.

Sehen Sie sich an, wie Sie versucht haben, sich anzumelden

mysql -u repl -p123

Da Sie keine IP-Adresse angegeben haben, geht mysql davon aus, dass Host localhost ist, und versucht, eine Verbindung über die Socket-Datei herzustellen. Aus diesem Grund lautet die Fehlermeldung Access denied for user 'repl'@'localhost' (using password: YES).

Man würde denken, [email protected]'%' Würde [email protected] Erlauben. Je nachdem, wie MySQL führt eine Benutzerauthentifizierung durch , wird dies einfach nie passieren. Würde das helfen?

mysql -u repl -p123 -h127.0.0.1

Ob Sie es glauben oder nicht, MySQL würde es erneut mit [email protected] Versuchen. Warum? Der MySQL-Client sieht 127.0.0.1 Und versucht es erneut mit der Socket-Datei.

Versuchen Sie es so:

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

Dies würde den MySQL-Client zwingen, das TCP/IP-Protokoll explizit zu verwenden. Es hätte dann keine andere Wahl, als den Benutzer [email protected]'%'.

5
RolandoMySQLDBA

Sie sollten für localhost spezifisch dafür ausgeben.

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

Und versuchen Sie es mit einer Verbindung.

4
Mannoj

Das Problem sind diese beiden Konten, die standardmäßig hinzugefügt werden.

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

+-----------+------------------+-------------------------------------------+
| Host      | user             | password                                  |
+-----------+------------------+-------------------------------------------+
| localhost |                  |                                           |
| server1   |                  |                                           |
+-----------+------------------+-------------------------------------------+

Ein leerer Benutzername ist ein Platzhalter. Unabhängig davon, welches Konto Sie verwenden, entspricht er diesem Benutzer, wenn MySQL glaubt, dass Sie eine Verbindung von localhost oder Ihrem lokalen Servernamen (in diesem Fall server1) herstellen ... da er kein Kennwort hat Passwort, das Sie versuchen, ist falsch. Die Benutzerauthentifizierung versucht nur die erste Übereinstimmung, sodass der von Ihnen erstellte Benutzer nie bemerkt wird, wenn Ihr Host localhost (oder Ihr Servername) ist.

Löschen Sie diese beiden aus der Tabelle mysql.user und dann FLUSH PRIVILEGES;.

Oder das Skript mysql_secure_installation kann dies für Sie tun, obwohl ich es eher vorziehe, Dinge manuell zu erledigen.

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

1

Stellen Sie sicher, dass alle Felder im Connector mit den richtigen Details eingerichtet sind

Host = "localhost", user = "CorrectUser", passwd = "coRrectPasswd", database = "CorreCTDB"

Überprüfen Sie auch, ob Fehler in Groß- und Kleinbuchstaben vorliegen. 1045 ist kein Syntaxfehler, hat jedoch mit falschen Angaben im Connector zu tun

0
Johan Swan