基本的なことだがmysqlのログイン時の挙動でつまづいたのでメモ
#コマンドメモ
#####▼登録済みユーザーの確認
SELECT user, host, password FROM mysql.user;
+----------+-----------+-------------------------------------------+
| user | host | password |
+----------+-----------+-------------------------------------------+
| root | localhost | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| root | localenv | |
| root | 127.0.0.1 | |
| root | ::1 | |
| | localhost | |
| | localenv | |
| hogehoge | % | *0B025000DCF68B1D374153A7005639E320D41D5B |
+----------+-----------+-------------------------------------------+
#####▼ユーザー作成
CREATE USER 'user名'@'ホスト名' IDENTIFIED BY 'パスワード';
例) CREATE USER hogehoge@'%' IDENTIFIED BY 'hogehoge';
※ホスト名の指定なしなら「%」がデフォルトで設定される
※明示的に「%」を指定する場合はシングルクォートで囲む
#####▼権限の表示
SHOW GRANTS FOR 'user名'@'ホスト名 or IPアドレス';
#####▼パスワードの設定
SET PASSWORD FOR 'ユーザー名'@'ホスト名' = PASSWORD('パスワード');
例) SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
#####▼ユーザーの削除
DROP USER 'user名'@'ホスト名 or IPアドレス';
#ログインできない問題の解決
ユーザーを作って、パスワードを設定したのにログインしようとするとエラー
mysql -uhogehoge -phogehoge
Warning: Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'hogehoge'@'localhost' (using password: YES)
どうやら、アクセスしたい6行目の「hogehoge@'%'」よりも先に
5行目の「''@localhost」の匿名ユーザーに該当すると判断されるようです
今回、私には匿名ユーザーは必要無かったので消しました
mysql> DROP USER ''@'localhost';
Query OK, 0 rows affected (0.01 sec)
mysql> SELECT user, host, password FROM mysql.user;
+----------+-----------+-------------------------------------------+
| user | host | password |
+----------+-----------+-------------------------------------------+
| root | localhost | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| root | localenv | |
| root | 127.0.0.1 | |
| root | ::1 | |
| | localenv | |
| hogehoge | % | *0B025000DCF68B1D374153A7005639E320D41D5B |
+----------+-----------+-------------------------------------------+
はい、これでログインできました!
ユーザーを作成したのに、ログインできない!となったら他のユーザーが悪さしていないか確かめた方がよさそうです
...というか不要なユーザーはすべて消した方がいいですね