(Mysql) GRANT文が意味不明だったのでまとめた

mysql-grant

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文をケースごとに紹介

ケース毎に分けて紹介した方が想像と理解が早いと思うので、ケースごとに紹介していく

mysql-grant-image

 

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)で行うのが正しい。

 

だから基本は使わないものと思って構わないと思う。たぶん。

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。