読者です 読者をやめる 読者になる 読者になる

MogLog

メモというか日記というか備忘録というか

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 ユーザー名@ホスト名;
show grants for recruit@localhost;(recruitユーザーの権限を確認する)

■「%」とは何か?
%はワイルドカードなので、全てのホストを指すのだが、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」型である。