MySQL-エラー1045(28000):ユーザーのアクセスが拒否されました


9

Ubuntu 10.04.2 LTSの新しいコピーを新しいマシンにインストールしました。MySQLにrootとしてログインしました。

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で作成しようとしたところ、うまくいきました。CREATE USER 'repl' @ 'localhost' IDENTIFIED BY '123'; しかし、ユーザーを特定のホストに制限したくないので、任意のホストを使用したいと思います。
davidjhp 2013年

回答:


5

MySQLのユーザー認証プロトコルrepl@'%'とは異なり、ログインできなかった理由。信じられているようなユーザーのパターンはカバーしていません。

ログインしようとした方法を確認してください

mysql -u repl -p123

IPアドレスを指定しなかったため、mysqlはホストがlocalhostであると想定し、ソケットファイルを介して接続を試みます。これが、エラーメッセージにとある理由Access denied for user 'repl'@'localhost' (using password: YES)です。

人はrepl@'%'許可すると思いますrepl@localhostMySQLがユーザー認証を実行する方法によると、それは決して起こりません。この助けをしますか?

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

固有のlocalhostを発行する必要があります。

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

接続してみてください。


1

問題は、デフォルトで追加されたこれら2つのアカウントです。

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

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

空白のユーザー名はワイルドカードなので、使用するアカウントに関係なく、ローカルホストまたはローカルサーバー名(この場合はserver1)から接続しているとMySQLが判断した場合、このユーザーと一致します...パスワードがないため、試行したパスワードが間違っています。ユーザー認証では最初の一致のみが試行されるため、ホストがローカルホスト(またはサーバー名)の場合は、作成したユーザーに通知されません。

これら2つをから削除しmysqlます。userテーブルとその後FLUSH PRIVILEGES;

または、mysql_secure_installationスクリプトでこれを行うこともできますが、私は手動で行うことを好む傾向があります。

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


0

コネクタのすべてのフィールドが正しい詳細で設定されていることを確認してください

ホスト= "localhost"、ユーザー= "CorrectUser"、passwd = "coRrectPasswd"、データベース= "CorreCTDB"

大文字と小文字のエラーも確認してください-1045は構文エラーではありませんが、コネクタの誤った詳細に関係しています


0

データベースがまだ構成されていない可能性があります。引数なしの呼び出しを発行するだけです。

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 --silent --force --fast /path/table-name.MYI

おかげで、

マスード

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.