過去メモの放流中。mysqlでユーザを管理する方法のまとめ。
参考:MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.5.1.3 GRANT 構文 :
##ユーザの登録
ユーザ登録には,GRANT文を用いる。
GRANT priv_type ON database.table TO user_name INDENTIFIED BY 'password';
###priv_type
作成するユーザの権限を設定する。コンマ区切りで複数指定することも可能。
priv_type | description |
---|---|
ALL [PRIVILEGES] | 一部を除く全てのシンプルな権限を設定します。 |
ALTER | ALTER TABLE の使用を可能にします。 |
CREATE | CREATE TABLE の使用を可能にします。 |
CREATE TEMPORARY TABLES | CREATE TEMPORARY TABLE の使用を可能にします。 |
CREATE USER | CREATE USER、DROP USER、RENAME USER、REVOKE ALL PRIVILEGES の使用を可能にします。 |
DELETE | DELETE の使用を可能にします。 |
DROP | DROP TABLE の使用を可能にします。 |
INSERT | INSERTの使用を可能にします。 |
SELECT | SELECT の使用を可能にします。 |
UPDATE | UPDATE の使用を可能にします。 |
USAGE | 「権限が無い」 の同義語です。 |
###database.table
権限を付与するデータベース名,テーブル名を指定する。ワイルドカード*
が使用可能。
###user_name
user_nameの項には,後ろに@付きで続けることで,host_nameの指定も可能。コレによりホスト名に応じたアクセス権の供与が可能となる。引用符を用いる場合の書式は,’sample_name'@'localhost'
のように@の前後でそれぞれクオートする。
ホスト名にはワイルドカード%
が利用可能。ユーザ名でのワイルドカードは不可で,匿名ユーザは空文字列で作成する。匿名ユーザにもホストの指定は可能。
’test_user1’@'%.mkkn.info' --mkkn.infoのサブドメイン全てにマッチ
'test_user2'@'192.168.0.%' --192.168.0.xxxの全IPにマッチ
###password
パスワードは平文で記述すれば,自動的にハッシュ化された値が登録されるよう。なお,SET PASSWORD構文で後からセットすることも可能。
SET PASSWORD FOR user_name = PASSWORD(’password’);
##ユーザの管理
###ユーザ権限の削除
REVOKE構文を用いて行う。
REVOKE ALL ON *.* FROM mkkn@localhost;
###ユーザの削除
ユーザ情報は,userという名前のテーブルから確認できる。列はいろいろあるが,表示,確認の際には以下のコマンドで十分だろう。
SELECT host, user, password FROM mysql.user;
ここから普通のテーブルと同様にDelete構文を実行すれば,ユーザを削除できる。
##ユーザ権限情報の更新
mysql.userテーブルに変更を加えた場合,必ず以下のコマンドを入力すること。
FLUSH PRIVILEGES;
これはDBのユーザ情報を更新する、という意味でコレを実行しないとDBに加えたユーザ除法の変更は反映されない。