MySQLユーザはmysqlデータベースの user テーブルによって管理されます。
ユーザ権限に関する操作は、GRANT文で行います。
SELECT, INSERT, UPDATE, DELETE のみが実行できるローカルユーザを追加を行う場合は次のSQL文で行います。
mysql> GRANT SELECT , INSERT , UPDATE , DELETE ON *.* TO ユーザID@"localhost" IDENTIFIED BY "パスワード";
mysql> FLUSH PRIVILEGES;
すべての権限を持つユーザを追加する場合は、次のSQL文で行います。
mysql> GRANT ALL ON *.* TO ユーザID@"localhost"IDENTIFIED BY "パスワード";
mysql> FLUSH PRIVILEGES;
これで、MySQLユーザを追加出来ます。
FLUSH PRIVILEGES でユーザ情報を反映させています。
反映させないままだとDBに接続出来ません。
上記では、SELECT , INSERT などを区切って権限について指定していますが、SELECT のみ指定したりすることも出来ます。
SELECT のみを指定することで、読み出し専用ユーザとしてユーザを追加することが可能です。
命令には、SELECT や INSERT 以外にも沢山種類があります。
その命令の種類を次に示します。
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 の使用を許可
参考
これらは、必要に応じてユーザに設定してあげます。
また、GRANT 文の最後にWITHをつけて、次のように指定してあげると1時間ごとのクエリ数、接続数、更新数などの制限をかける事が可能です。
mysql> GRANT 〜 WITH
MAX_QUERIES_PER_HOUR 0
MAX_CONNECTIONS_PER_HOUR 0
MAX_UPDATES_PER_HOUR 0
それぞれの説明)
MAX_QUERIES_PER_HOUR | 1時間ごとのクエリ数制限 |
MAX_CONNECTIONS_PER_HOUR | 1時間ごとの接続数数制限 |
MAX_UPDATES_PER_HOUR | 1時間ごとの更新数制限 |
スポンサードリンク
PHP&MySQL