MySQL/dbonline/user

Last-modified: 2010-10-21 (木) 15:05:59

ユーザー関連

ユーザの作成

 ・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: 同時接続可能なユーザ数を設定