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;