Contents
- 1 Mysqlで使う”GRANT 何ちゃら~”って文
- 2 GRANT文とは
- 3 GRANT文の構造
- 4 GRANT文をケースごとに紹介
- 4.1 localhostからアクセスしたユーザー”userA”に、すべてのデータベースにアクセス出来る権限を付与
- 4.2 localhostからアクセスしたユーザー”userB”に、データベース”db1″のみにアクセス出来る権限を付与
- 4.3 localhostからアクセスしたユーザー”userC”に、データベース”db1″のテーブル”table1″のみにアクセス出来るを作成
- 4.4 localhostからアクセスしたユーザー”userD”に、データベース”db1″のテーブル”table2″のみにSELECT文を実行できる作成
- 4.5 localhostからアクセスしたユーザー”userE”に、データベース”db2″のテーブル”table3″のカラム”columnX”のみにSELECT文を実行できる作成
- 4.6 192.168.1.*からアクセスしたユーザー”userF”に、データベース”db2″のテーブル”table4″のカラム”columnY”のみにSELECT文を実行できる作成
- 5 with grant option
Mysqlで使う”GRANT 何ちゃら~”って文
grant all privileges on *.* to ユーザ名@'URL or IPアドレス' identified by 'パスワード' with grant option;
DLLでもDMLでもない訳わからん長いやつ、ググってみた。
GRANT文とは
各Mysqlユーザ(どのPCから来たか単位)に、
DBやテーブル単位で、何ができるか権限を付与できる文。
GRANT文の構造
GRANT 与えるsql権限 ON どのDBに.どのテーブルに TO どのユーザ名に@どのホストからの ( WITH GRANT OPTION)
長い
GRANT文をケースごとに紹介
ケース毎に分けて紹介した方が想像と理解が早いと思うので、ケースごとに紹介していく

localhostからアクセスしたユーザー”userA”に、すべてのデータベースにアクセス出来る権限を付与
GRANT ALL PRIVILEGES ON *.* TO 'userA'@'localhost' ;
localhostからアクセスしたユーザー”userB”に、データベース”db1″のみにアクセス出来る権限を付与
GRANT ALL PRIVILEGES ON db1.* TO 'userB@'localhost' ;
localhostからアクセスしたユーザー”userC”に、データベース”db1″のテーブル”table1″のみにアクセス出来るを作成
GRANT ALL PRIVILEGES ON db1.table1 TO 'userC'@'localhost' ;
localhostからアクセスしたユーザー”userD”に、データベース”db1″のテーブル”table2″のみにSELECT文を実行できる作成
GRANT SELECT ON db1.table2 TO 'userD'@'localhost' ;
localhostからアクセスしたユーザー”userE”に、データベース”db2″のテーブル”table3″のカラム”columnX”のみにSELECT文を実行できる作成
GRANT SELECT ( columnX ) ON db2.table3 TO 'userE'@'localhost' ;
192.168.1.*からアクセスしたユーザー”userF”に、データベース”db2″のテーブル”table4″のカラム”columnY”のみにSELECT文を実行できる作成
GRANT SELECT ( columnY ) ON db2.table4 TO 'userF'@192.168.1%' ;
上記のように、各ケースで細かくMysqlデータベースへのアクセスを指定できるのがGRANT文。
with grant option
冒頭のGRANT文で付けていたこの「grant」オプション、
GRANT文を実行できるよって権限を付与するオプションだ。
でもこの文は注意が必要。
GRANT文は上記のように細かくユーザごとのデータベースアクセス権を設定できる特権文だ。
つまり基本は管理者権限(root)で行うのが正しい。
だから基本は使わないものと思って構わないと思う。たぶん。
コメントを残す