page_adsence

2011年4月25日月曜日

MySQLでユーザーの追加や権限等の設定

毎回忘れてググっているので、忘れてもいいようにメモ。

ユーザーの追加には以下のようなSQLを流す。
mysql> GRANT <操作名> ON <データベース名>.<テーブル名> TO <ユーザ名>@<ホスト名> IDENTIFIED BY '<パスワード>';
mysql> FLUSH PRIVILEGES;

操作名は下記にある表の中から選んで使用する。
セキュリティを全く考慮しないのであれば、ALLでも問題はない。
データベース名やテーブル名を指定することで、指定したデータベースやテーブル以外にはアクセスできないようなユーザーを作成することができる。
ユーザー名はDBに接続する際に使用するユーザー名
接続先のDBがあるホスト名またはIPを記載する。
WebサーバとDBサーバが一緒であれば、localhostで繋がる。
WebサーバとDBサーバが異なる場合は、DBサーバのホスト名またはIPを記載することで接続できる。
「FLUSH PRIVILEGES」はユーザー情報の反映のためのSQLで、これをしないと作成したユーザーで
ログインすることはできない。


操作名一覧
ALL
  すべての権限を設定出来るユーザを追加
ALTER
  ALTER TABLE(テーブル変更)の使用を許可
CREATE
  CREATE TABLE(テーブル作成) の使用を許可
CREATE TEMPORARY TABLES
  CREATE TEMPORARY TABLE(一時テーブルの作成) の使用を許可
DROP
  DROP TABLE(テーブルの削除) の使用を許可
INDEX
  CREATE INDEX(インデックス作成) および DROP INDEX(インデックス削除) の使用を許可
LOCK TABLES
  SELECT 権限を持つテーブルで LOCK TABLES(テーブルのロック) の使用を許可
PROCESS
  SHOW FULL PROCESSLIST の使用を許可
REPLICATION CLIENT
  スレーブおよびマスタのサーバーを知る権利を付与
REPLICATION SLAVE
  レプリケーションのスレーブに必要(マスタからバイナリログを読み取るため)
SHOW DATABASES
  SHOW DATABASES によりすべてのデータベースが表示される
SHUTDOWN
  mysqladmin shutdown の使用を許可