Laravel Sail | MySQLにデータベース追加と権限付与する方法

複数のデータベースを利用したいと思い既存の sailユーザーでMySQLにデータベース追加を試みましたが、権限がなく追加できませんでした。以下、rootユーザーでのデータベース追加から sailユーザーへ権限付与するところまでのメモ。

rootユーザーでログインとデータベース追加

rootユーザーでログイン

% sail exec mysql mysql -uroot -ppassword

データベース一覧表示

SHOW DATABASES; で既存データベースの一覧を確認します。

mysql> SHOW DATABASES;
+----------------------+
| Database             |
+----------------------+
| information_schema   |
| mylaravel_app        |
| mysql                |
| performance_schema   |
| sys                  |
| testing              |
+----------------------+

データベース作成

mysql> CREATE DATABASE mylaravel_app_test;
Query OK, 1 row affected (0.01 sec)

データベース一覧表示(作成後)

mysql> SHOW DATABASES;
+----------------------+
| Database             |
+----------------------+
| information_schema   |
| mylaravel_app        |
| mylaravel_app_test   |
| mysql                |
| performance_schema   |
| sys                  |
| testing              |
+----------------------+

sailユーザーの権限確認と権限付与

sailユーザーの権限確認

SHOW GRANTS FOR 'sail'@'%'; で sailユーザーの権限を確認します。

mysql> SHOW GRANTS FOR 'sail'@'%';
+-----------------------------------------------------------+
| Grants for sail@%                                         |
+-----------------------------------------------------------+
| GRANT USAGE ON *.* TO `sail`@`%`                          |
| GRANT ALL PRIVILEGES ON `mylaravel_app`.* TO `sail`@`%`   |
| GRANT ALL PRIVILEGES ON `testing%`.* TO `sail`@`%`        |
+-----------------------------------------------------------+

sailユーザーに指定データベースのフル権限を付与する

mysql> GRANT ALL PRIVILEGES ON mylaravel_app_test.* TO 'sail'@'%';
Query OK, 0 rows affected (0.00 sec)

sailユーザーの権限確認(付与後)

mysql> SHOW GRANTS FOR 'sail'@'%';
+----------------------------------------------------------------+
| Grants for sail@%                                              |
+----------------------------------------------------------------+
| GRANT USAGE ON *.* TO `sail`@`%`                               |
| GRANT ALL PRIVILEGES ON `mylaravel_app`.* TO `sail`@`%`        |
| GRANT ALL PRIVILEGES ON `mylaravel_app_test`.* TO `sail`@`%`   |
| GRANT ALL PRIVILEGES ON `testing%`.* TO `sail`@`%`             |
+----------------------------------------------------------------+
4 rows in set (0.00 sec)

その他

sailユーザーから権限剥奪する

REVOKE ALL PRIVILEGES ON mylaravel_app_test.* FROM 'sail'@'%';

動作環境情報

"macOS Ventura" 13.4
"Docker Desktop" 4.17.0
"Laravel Sail"

コメント

タイトルとURLをコピーしました