ユーザー関連
ユーザの作成
・CREATE USER user;
で後からパスワードを設定してもよいが、安全面を考えて、同時にパスワードをかけたほうがよい。
CREATE USER user IDENTIFIED BY [PASSWORD] 'password';
なぜか、passwordだけは' 'でくくる。
上記の文を「,」で接続することにより、複数ユーザを同時に作ることも可能
create userの際、同じユーザ名を設定するとエラーになるが、
ホストが違って、同じユーザー名ならOK
※ユーザ指定の書式 → user_name@host_name
※ホスト名を省略すると、ホスト名は%になる
・ホスト名は、アクセス可能な場所を表していて、
IPやホスト名が自分に該当しないときは、ローカルからでもログインエラーになる
たとえば、同じCクラス(192.168.128.0/24)の全てのホストから
アクセス可能なユーザの指定は、ワイルドカードを使い次のように記述する
'username'@'192.168.128.%'
ユーザ名&ホスト名の一覧の参照
mysql> select User,Host from mysql.user;
※↑これは、「そのまま」打ち込む。
パスワードの設定
・現在、ログイン中のユーザのパスワードを設定するとき
SET PASSWORD = PASSWORD('some password')
・任意のユーザーのパスワードを設定するとき
SET PASSWORD FOR user = PASSWORD('some password')
※ユーザ名はホスト名まで含めて指定することに注意
例)set password for 'username'@'192.168.128.1' = password('pass');
ユーザのリネーム
RENAME USER old_user TO new_user;
※変更前のユーザーが持っていた権限はそのまま新しいユーザーに引き継がれる
※上記の文を「,」で区切って、複数指定することも可能
※ユーザ名はホスト名まで含めて指定することに注意
ユーザの削除
DROP USER user;
※上記の文を「,」で区切って、複数指定することも可能
※ユーザ名はホスト名まで含めて指定することに注意
権限
MySQLの権限について
大きく分けて5種類ある
(1)すべてのデータベースに適用される権限 (2)特定のデータベースに適用される権限 (3)特定のテーブルに適用される権限 (4)特定のテーブル内の単一カラムに適用される権限 (5)ルーチンレベルで適用される権限
これにより、特定のデータベースにだけテーブルを作成する権限を与えたり、
特定のテーブルの特定のカラムだけ参照できるという権限を与えたりできる。
権限の確認
設定された権限を見る場合は、
SHOW GRANTS FOR user
ホスト名付きで、show grants for 'user'@'localhost';のように指定する
現在、接続しているユーザであれば、以下のコマンドでも確認できる
show grants; show grants for current_user();
権限の設定
GRANT 権限 ON レベル TO user;
※レベルというのは、前述のMySQLの権限の5種類のこと
各種、レベルは以下のように設定する
(1)*.* (2)dbname.* (3)db_name.table_name (4)db_name.table_name ※ただし、権限の後に (カラム1, カラム2, ...)のように記述
※権限には、http://www.dbonline.jp/mysql/user/index5.html
に示すものを指定する(基本的には、MySQLのコマンド名)
複数指定する場合は、, で区切って指定も可能
例)grant create on *.* to 'user'@'localhost';
grant select, update on test.goods to 'user'@'localhost';
権限の削除
「権限がないことを表す権限」に、USAGEがあるが、これを追加しても、権限は無効にならない。
→つまり、USAGEは、ただのデフォルト値
権限を削除する場合は以下の書式を使う
REVOKE 権限 ON レベル FROM user;
例)revoke select on *.* from 'user'@'localhost';
特定のユーザからすべてのレベルのすべての権限を削除するには以下の書式
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
※権限をすべて削除してもユーザそのものは削除されない
cf) DROP USER
権限のオプション
(1)他ユーザに対する権限設定の可否
GRANT 権限 ON レベル TO user WITH GRANT OPTION;
WITH GRANT OPTIONを設定すると、
他のユーザに対する権限を設定できるようになる。
発動可能な権限は、自分に対しての権限と同じ。
(2)処理数の制限
GRANT 権限 ON レベル TO user WITH □□□ count;
□□□に入れるものは以下の通り
MAX_QUERIES_PER_HOUR: 1時間の間にユーザが行えるクエリ数を設定 MAX_UPDATES_PER_HOUR: 1時間の間にユーザが行える更新数を設定 MAX_CONNECTIONS_PER_HOUR: 1時間にユーザがログインできる回数を設定 -- MAX_USER_CONNECTIONS: 同時接続可能なユーザ数を設定