82

このコマンドの使用

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)

私はルートとしてこれを行っており、特権をフラッシュしようとしました。

無数のユーザーでこれを試しましたが、うまくいかないようです。パスワードなしでユーザーを作成でき、ログインが機能します。コマンドラインおよび phpmyadmin から

また、ユーザーが mysql.user にあったかどうかを確認してください。

ブライアンショーの助成金を表示:

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

13 に答える 13

189

おそらく、ユーザー テーブル内のデフォルト ユーザーの 1 人が であるという永続的な MySQL の問題が発生し、テーブル内の後の'' @ localhostすべてのユーザーが拒否されるlocalhostことになります。私がすることはmysqldump、データベースであり、テーブルmysqlでこのエントリを探します。User見つかった場合は、それを削除して特権をフラッシュします。

詳細については、https://dev.mysql.com/doc/refman/5.5/en/connection-access.htmlを参照してください。

特定のユーザー名について、サーバーが接続の一致を見つけようとするときに、そのユーザーを明示的に指定するすべての行が最初に使用されると考えるのはよくある誤解です。本当じゃない。前の例はこれを示しています。jeffrey による h1.example.net からの接続は、User 列の値として 'jeffrey' を含む行ではなく、ユーザー名のない行によって最初に照合されます。その結果、jeffrey は、接続時にユーザー名を指定したにもかかわらず、匿名ユーザーとして認証されます。

于 2009-09-11T17:47:56.490 に答える
46

これは、匿名ユーザーによって引き起こされる問題です。MySQLをインストールしたら、常に実行します

shell> mysql_secure_installation 

root パスワードの設定/変更、匿名ユーザーの削除、リモート root ログインの禁止、テスト データベースの削除を選択します。これにより、匿名ユーザーが削除され、インストールが保護されます。また、あなたが抱えている問題も解決するはずです。

于 2013-06-21T14:19:23.653 に答える
22
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
于 2013-04-27T10:41:46.397 に答える
20

ここで提供される解決策はどれも機能しませんでした。試行錯誤を繰り返した結果、パスワードに特殊文字が含まれていることに気付きました。特殊文字なしでパスワードを変更すると問題が解決しました

于 2015-06-03T21:05:33.240 に答える
5

mysqlのドキュメントには次のように書かれています:(http://dev.mysql.com/doc/refman/5.1/en/adding-users.htmlから):

アカウントのうちの2つには、のユーザー名montyとのパスワードがありsome_passます。どちらのアカウントも、何でもできる完全な権限を持つスーパーユーザーアカウントです。アカウントは'monty'@'localhost'、ローカルホストから接続する場合にのみ使用できます。'monty'@'%'アカウントはホスト'%'部分にワイルドカードを使用するため、どのホストからでも接続できます。

montyとしてどこからでも接続できるようにするには、両方のアカウントが必要montyです。mysql_install_dblocalhostアカウントがない場合、montyがローカルホストから接続するときに、によって作成されたlocalhostのanonymous-userアカウントが優先されます。その結果、montyは匿名ユーザーとして扱われます。Hostこれは、anonymous-userアカウントの列の値がアカウントよりも具体的'monty'@'%'であるため、ユーザーテーブルの並べ替え順序が早いためです。

これを念頭に置い'brian'@'localhost'て、同じ権限を持つユーザーを作成することをお勧めします。

于 2012-12-20T22:56:24.557 に答える
3

「ラッセル・シルバ」が正しいと思います...

でユーザーを作成しました

CREATE USER 'username'@'%' PASSWORD='userpassword';

しかし、私はこのアカウントでログインできません.コンソールは私に言った

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

そのため、「%」を「localhost」に変更する以外は同じユーザー名でユーザーを作成し、最終的に「username」としてログインできました。私にとってはかなり奇妙ですが。

于 2013-04-29T02:58:40.130 に答える
2

grant ステートメントで brian を囲む引用符を忘れました。次のようにしてみてください。

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

于 2009-09-11T17:47:57.067 に答える