--------(--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2012-06-17(Sun)

MySQL Grantで権限を操ってみる

MySQLの権限系って常に使わないため忘れてしまうのでメモ。

現在のユーザーの権限を確認
$ mysql -u root -p
> show grants;
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*F4577927EA5072D92B14A443FF94FE1F06CF4598' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

rootなんで当然ALL PRIVILEGES。

実験的にユーザーを追加。コマンドは以下のとおり。
GRANT <操作名> ON <データベース名>.<テーブル名> TO <ユーザ名>@<ホスト名> IDENTIFIED BY '<パスワード>';
権限はlocalhostからのinsertとdeleteにして全てのDBに権限を付与。
mysql> GRANT INSERT,SELECT ON *.* TO testuser@localhost IDENTIFIED BY 'testuserps' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

ユーザーの権限はmysql.user テーブルに格納されている。
どのようなテーブルか見てみる。
mysql> describe mysql.user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
---- まだまだあるが省略。

つまり、ユーザーの権限を見たい場合は
mysql> select  User, Select_priv, Insert_priv, Update_priv, Delete_priv from mysql.user where User='testuser';

+----------+-------------+-------------+-------------+-------------+
| User | Select_priv | Insert_priv | Update_priv | Delete_priv |
+----------+-------------+-------------+-------------+-------------+
| testuser | Y | Y | N | N |
+----------+-------------+-------------+-------------+-------------+
1 row in set (0.00 sec)

SELECT, INSERTがYになっていることが確認できる。

以下の方法でも確認できる。
mysql> show grants for testuser@localhost;
+--------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for testuser@localhost |
+--------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT ON *.* TO 'testuser'@'localhost' IDENTIFIED BY PASSWORD '*33EE0B1068FF0F0268FB022343BB3FA45ABE7308' WITH GRANT OPTION |
+--------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

INSERT権限を削除する。
mysql> REVOKE INSERT ON *.* FROM testuser@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql> select User, Select_priv, Insert_priv, Update_priv, Delete_priv from mysql.user where User='testuser';
mysql> FLUSH PRIVILEGES; # 更新
+----------+-------------+-------------+-------------+-------------+
| User | Select_priv | Insert_priv | Update_priv | Delete_priv |
+----------+-------------+-------------+-------------+-------------+
| testuser | Y | N | N | N |
+----------+-------------+-------------+-------------+-------------+
1 row in set (0.00 sec)

データが更新されているのがわかる。

関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

コメント

プロフィール

kumagonjp2

Author:kumagonjp2
Python,Django,R,Mongo,MySQL,Struts,Spring,データマイニングなどサーバー関係のメモを残していきます。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
雪が3Dで降るブログパーツ ver2

マウスで見る方向変えられます

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。