2013-02-10
MySQLのユーザー作成や権限まわりのおさらいをした
MySQL のユーザの作成方法や権限の設定方法がわからなかったので、おさらいをした。 その時のメモというかノート。
パスワードを設定する
root でログインする必要がある
SET PASSWORD FOR ユーザー名@ホスト名=PASSWORD("パスワード");
# 具体例
SET PASSWORD FOR root@localhost=PASSWORD("****");
ユーザの一覧を確認する
root でログインした後、mysql という名前のデータベースを use する。その後以下のコマンドを実行する。
SELECT host, user, password from user;
※初期時の謎のユーザは何なのか? → よくわからないが、root 以外は不要なので消したほうが良いらしい → 実際に localhost 以外すべて削除したら今度はログインできなくなって詰んだ。とりあえず、root ではないユーザを全て削除することにした。
FLUSH : キャッシュを消去する
MySQL が利用している内部キャッシュを消去するコマンド。 FLUSH を実行するには RELOAD 権限が必要。
「FLUSH PRIVILEGES」のコマンドを実行することで、データベースの権限テーブルから権限を再読み込みする。 user 周りを変更した際はこのコマンドを実行することが推奨されているらしい。 ※ソースはここ
ユーザの権限を確認する
SHOW GRANTS FOR ユーザー名@ホスト名;
# 具体例 : recruitユーザーの権限を確認する
SHOW GRANTS FOR recruit@localhost;
※「%」とは何か? %はワイルドカードなので、全てのホストを指すのだが、localhost だけは指さないらしい。
ユーザを作成する
GRANT 権限 ON DB名.テーブル名 TO ユーザー名 IDENTIFIED BY "パスワード";
# 具体例
GRANT ALL PRIVILEGES ON recruit_development.* TO recruit IDENTIFIED BY "recruit";
ログインしているユーザを確認する
SELECT current_user();
権限の一覧
http://dev.mysql.com/doc/refman/5.1/ja/privileges-provided.html を見ると、権限の全てが書かれている。色々な種類の権限があるが、まずは以下の権限あたりを抑えたいと思った。
- CREATE
- DROP
- INSERT
- SELECT
- UPDATE
- ALTER
- DELETE
- INDEX
- TRIGGER
- GRANT OPTION
- REFERENCES
- EVENT
また、これらの権限が付与されているかどうかは、「mysql」データベース内の user テーブル等に書かれている。カラム名は「権限_priv」となっている(例えば、SELECT 権限であれば、「Select_priv」となる)。 カラムの方は「ENUM」型である。
h3pei
関連記事
次の記事 >>『アルゴリズムとデータ構造』学習ノート:リニアサーチ