権限を除去する REVOKE って初めて使ったわ。今まで GRANT しか使った事なかった\(^o^)/
GRANT でユーザに権限与えるのは下みたいな感じ。これだと全部の権限を与える。
mysql > grant all on db.* to 'user'@'localhost' identified by 'password';
REVOKE はこれと逆に、権限を奪うもので、以下のような感じにすると全部の権限を奪える。
mysql > revoke all on db.* from 'user'@'localhost';
あとは、全部じゃなくて操作を指定したりDB,Table を指定すれば良い感じ。MySQLの公式サイトによると、こんな感じの操作を制御出来る。
- ALL [PRIVILEGES]
- WITH GRANT OPTION 以外のすべての権限を設定
- ALTER
- ALTER TABLE の使用を許可
- CREATE
- CREATE TABLE の使用を許可
- CREATE
- TEMPORARY TABLES CREATE TEMPORARY TABLE の使用を許可
- DELETE
- DELETE の使用を許可
- DROP
- DROP TABLE の使用を許可
- EXECUTE
- ストアドプロシージャの使用を許可(MySQL 5.0)
- FILE
- SELECT … INTO OUTFILE および LOAD DATA INFILE の使用を許可
- INDEX
- CREATE INDEX および DROP INDEX の使用を許可
- INSERT
- INSERT の使用を許可
- LOCK TABLES
- SELECT 権限を持つテーブルで LOCK TABLES の使用を許可
- PROCESS
- SHOW FULL PROCESSLIST の使用を許可
- REFERENCES
- 将来のために予約
- RELOAD
- FLUSH の使用を許可
- REPLICATION CLIENT
- スレーブおよびマスタのサーバーを知る権利を付与
- REPLICATION SLAVE
- レプリケーションのスレーブに必要(マスタからバイナリログを読み取るため)
- SELECT
- SELECT の使用を許可
- SHOW DATABASES
- SHOW DATABASES によりすべてのデータベースが表示される
- SHUTDOWN
- mysqladmin shutdown の使用を許可
- SUPER
- 最大接続数に達していても接続を 1 つだけ許可し、コマンド CHANGE MASTER、KILL thread、mysqladmin debug、PURGE MASTER LOGS、および SET GLOBAL の実行を許可
- UPDATE
- UPDATE の使用を許可