権限 | MySQL
MySQL の権限は各ユーザーごとに mysql.user テーブルのカラムで管理されています。
ref. 6.2.2 MySQL で提供される権限
権限を確認
mysql> show grants for '<user>'@'<host>';
ルート( root )ユーザーの例
mysql> show grants for 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
権限が未付与の例
+----------------------------------------------------------------------------------------------------------------+
| Grants for example@localhost |
+----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'example'@'localhost' IDENTIFIED BY PASSWORD '*57237BB49761F29AB9724BA084E811D70C12393D' |
+----------------------------------------------------------------------------------------------------------------+
権限を付与
権限追加
mysql> GRANT ALL PRIVILEGES ON example_db.* TO 'example'@'localhost'; -- スキーマスコープ
mysql> GRANT ALL PRIVILEGES ON example_db.* TO 'example'@'127.0.0.1'; -- スキーマスコープ
-- GRANT 文を使用する場合は FLUSH PRIVILEGES; は不要
ユーザー作成および権限付与
ユーザー作成とグローバルスコープ権限の付与を同時に行います。
mysql> GRANT ALL PRIVILEGES ON `<db>`.`*` TO '<user>'@'<host>' IDENTIFIED BY '<password>' WITH GRANT OPTION;
-- GRANT 文を使用する場合は FLUSH PRIVILEGES; は不要
例1
ホスト 192.168.11.1, ユーザー root, パスワード passwordでアカウントを作成してグローバルスコープの権限を付与します。
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"192.168.11.1" IDENTIFIED BY 'password' WITH GRANT OPTION;
-- GRANT 文を使用する場合は FLUSH PRIVILEGES; は不要
権限削除
mysql> REVOKE ALL ON *.* FROM 'root'@'192.168.11.1;