Posted at

MySQLへユーザー追加の手順 grant, revoke

More than 5 years have passed since last update.


ユーザー作成: 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