このコマンドを使用する
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' |
ユーザーテーブルのデフォルトユーザーの1人が'' @ localhost
、これはテーブルの後半ですべてのlocalhost
ユーザーを拒否します。私がすることは、mysqldump
mysql
データベースであり、User
テーブルでこのエントリを探します。見つかった場合は、削除して特権をフラッシュします。
詳細については、 https://dev.mysql.com/doc/refman/5.5/en/connection-access.html を参照してください。
特定のユーザー名について、サーバーが接続に一致するものを見つけようとすると、そのユーザーを明示的に指定するすべての行が最初に使用されると考えるのはよくある誤解です。本当じゃない。上記の例は、jeffreyによるh1.example.netからの接続が、ユーザー列の値として「jeffrey」を含む行ではなく、ユーザー名のない行によって最初に一致することを示しています。 その結果、jeffreyは接続時にユーザー名を指定したにもかかわらず、匿名ユーザーとして認証されます。
これは、匿名ユーザーが原因の問題です。 MySQLをインストールすると、常に実行されます
Shell> mysql_secure_installation
ルートパスワードの設定/変更、匿名ユーザーの削除、リモートルートログインの禁止、テストデータベースの削除を選択します。これにより、匿名ユーザーが削除され、インストールが保護されます。また、あなたが持っている問題を解決する必要があります。
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
ここで提供されるソリューションはどれも機能しませんでした。エラーと試行錯誤の後、パスワードに特殊文字が含まれていることに気付きました。特殊文字なしでパスワードを変更すると、問題が解決しました
Mysqlドキュメントには次のように書かれています:(from http://dev.mysql.com/doc/refman/5.1/en/adding-users.html ):
2つのアカウントには、
monty
のユーザー名とsome_pass
のパスワードがあります。両方のアカウントは、すべての権限を持っているスーパーユーザーアカウントです。'monty'@'localhost'
アカウントは、ローカルホストから接続する場合にのみ使用できます。'monty'@'%'
アカウントは、ホスト部分に'%'
ワイルドカードを使用するため、任意のホストからの接続に使用できます。どこからでも
monty
として接続できるようにするには、monty
の両方のアカウントが必要です。 localhostアカウントがない場合、montyがローカルホストから接続するときに、mysql_install_db
によって作成されるlocalhostの匿名ユーザーアカウントが優先されます。その結果、monty
は匿名ユーザーとして扱われます。これは、匿名ユーザーアカウントが'monty'@'%'
アカウントよりも特定のHost
列値を持っているため、ユーザーテーブルの並べ替え順序が早いためです。
これを念頭に置いて、同じ権限を持つ'brian'@'localhost'
ユーザーを作成することをお勧めします。
「ラッセル・シルバ」は正しいと思います...
によってユーザーを作成しました
CREATE USER 'username'@'%' PASSWORD='userpassword';
しかし、このアカウントではログインできません。コンソールから
ERROR 1045 (28000): Access denied for user 'username'@'localhost' (using password: YES)
そこで、「%」を「localhost」に変更する以外は同じユーザー名でユーザーを作成し、最終的に「username」としてログインできました。それは私にとってはかなり奇妙です。
助成金明細書でブライアンの引用符を忘れました。このようにしてみてください:
GRANT ALL PRIVILEGES ON *.* to 'brian'@'%' identified by 'password';
将来の検索者にもう1つの可能性を提供するアカウントを作成しました。
経験豊富なユーザーにとっては明らかですが、パスワードはランダムに生成され、「\」が含まれていました。そのキャラクターが問題を引き起こしているように見えて、ログインできなくなってしまうまでしばらく時間がかかりました。
私の場合、「SSL:REQUIRE SSL」(phpmyadmin内)をクリックしたことが原因でした。 「REQUIRE NONE」に変更すると、ログインできました。
17.04にアップグレードした後、Ubuntuで実行されているMaria DBに接続しようとすると、同様の問題が発生しました。
デフォルトでは、ローカルホストである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
別のホストから接続してから、localhost匿名ユーザーをバイパスし、それを削除して特権をフラッシュすることもできます。
mysql -u brian -ppassword -h 'other_Host_than_localhost'