【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の権限管理についてまとめる