ユーザー作成: CREATE USER
CREATE USER '{username}'@"{from_domain(ipaddress)}" IDENTIFIED BY "{password}";
ex)
CREATE USER 'watashi'@"192.168.%" IDENTIFIED BY "hoge";
CREATE USER 'watashi'@"172.21%" IDENTIFIED BY "hoge";
新規ユーザーの場合、↑をmysql.dbに流し込むと自動で、mysql.userにレコードが出来る。
このとき、権限はなんにもない状況。
権限の付与: GRANT
主な権限の種類
コマンド | 内容 |
---|---|
all / ALL PRIVIREGES | 全ての権限を与える |
create | テーブルを作成する権限を付与する |
alter | テーブルを変更する権限を付与する |
drop | テーブルを削除する権限を付与する |
index | インデックスを作成/削除する権限を付与する |
その他 select,update,insert,delete,truncate.... | 各テーブル操作の権限を付与する |
GRANT文の書き方
GRANT 権限 ON レベル(対象DB or Table) TO 対象ユーザー;
権限情報管理テーブル
テーブル名 | 説明 |
---|---|
user | ユーザーのグローバルレベルの権限とパスワードを管理するテーブル |
db | ユーザーのデータベースレベルの権限を管理するテーブル |
host | dbテーブルにホスト名が指定されていない場合に適用される権限を管理するためのテーブル |
tables_priv | ユーザーのテーブルレベルの権限を管理するテーブル |
columns_priv | ユーザーのフィールドレベルの権限を管理するテーブル |
例文
GRANT SELECT, INSERT, UPDATE ON hoge.* TO watashi@"192.168.%" IDENTIFIED BY "password";
意味
192.168.~のIPアドレスから、passwordというパスワードでアクセスしてきた、watashiというユーザーに、hogeというDB内へのすべてのリソースに、select/insert/updateをする権限を与える。
権限の削除
例文
REVOKE SELECT ON *.* FROM watashi@"192.168.%";
特定のユーザーからすべての権限を削除したい場合
REVOKE ALL PRIVILEGES, GRANT OPTION FROM watashi@"192.168.%";
GRANT, REVOKE実行後に行うこと
以下のコマンドを叩く
FLUSH PRIVILEGES;
パスワードの設定・変更
書式
SET PASSWORD FOR {username}@"{from_ip_domain}"=PASSWORD('{password}');
例文
SET PASSWORD FOR watashi@"192.168.%"=PASSWORD('watashi');
参考
http://dev.mysql.com/doc/refman/5.7/en/grant.html
http://dev.mysql.com/doc/refman/5.7/en/revoke.html
http://dev.mysql.com/doc/refman/5.7/en/grant-table-structure.html
http://www.dbonline.jp/mysql/user/index6.html
http://linux.kororo.jp/cont/server/mysql_user.php