lulu

【MySQL】MySQLの8系でユーザー作成をして、権限を付与する

検証内容

MySQLの8系でユーザー作成と権限付与を行う

検証した理由

GRANT構文でユーザー作成をしようとしたところ、MySQL8の場合、作成できなかったため

検証環境

  • 8.0.23 MySQL Community Server

ユーザー作成フロー

$ mysql -uroot -p

mysql> CREATE USER 'lulu'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT all ON *.* TO 'lulu'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> select host, user from mysql.user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| localhost | lulu             |
...
| localhost | root             |
+-----------+------------------+

外部から接続する場合

ERROR 1045 (28000): Access denied for user 'lulu'@'****' (using password: YES)

というエラーが発生する.
理由は、hostがlocalhostになっていて、外部からの接続を許可していないから。
そのため、hostにlocalhostではなく、%を付与することで外部からの接続が確立できる。

$ mysql -uroot -p

mysql> CREATE USER 'lulu2'@'%' IDENTIFIED BY 'password';
mysql> GRANT all ON *.* TO 'lulu2'@'%';
mysql> FLUSH PRIVILEGES;
mysql> select host, user from mysql.user;

+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | lulu2            |
| localhost | lulu             |
...
| localhost | root             |
+-----------+------------------+

TODO

mysql userの権限管理についてまとめる