MySQLの権限設定でパフォーマンスを向上させる
MySQLの権限確認方法
SHOW GRANTS ステートメントを使う
概要
SHOW GRANTS
ステートメントは、現在のユーザーまたは指定されたユーザーに付与されている権限を表示します。
構文
SHOW GRANTS;
# 現在のユーザーの権限を表示
SHOW GRANTS FOR CURRENT_USER();
# 特定のユーザーの権限を表示
SHOW GRANTS FOR 'username'@'hostname';
オプション
FOR CURRENT_USER()
: 現在のユーザーの権限のみを表示します。FOR 'username'@'hostname'
: 指定されたユーザーの権限のみを表示します。WITH GRANT OPTION
: 権限の付与権限も表示します。
例
mysql> SHOW GRANTS;
+-------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+-------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+-------------------------------------------------------------------------------------------------------------------------------------+
この例では、root
ユーザーはすべてのデータベースとテーブルに対してすべての権限を持ち、さらに他のユーザーに権限を付与する権限も持っています。
mysql コマンドラインツールを使う
mysql
コマンドラインツールを使って、SHOW GRANTS
ステートメントを実行することができます。
コマンド
mysql -u username -p password -D database -e "SHOW GRANTS;"
-u username
: ユーザー名-p password
: パスワード-D database
: データベース名-e "SHOW GRANTS;"
: 実行するSQLステートメント
$ mysql -u root -p -D test -e "SHOW GRANTS;"
+-------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+-------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost' WITH GRANT OPTION |
+-------------------------------------------------------------------------------------------------------------------------------------+
MySQL Workbenchを使う
MySQL Workbenchは、MySQLを管理するためのGUIツールです。
手順
- MySQL Workbenchを起動し、接続するサーバーを選択します。
- 左側のナビゲーションツリーで、Users > 該当のユーザー を選択します。
- 右側のタブで Grants を選択します。
結果
Grants タブには、ユーザーに付与されている権限が表示されます。
その他のツール
上記以外にも、さまざまなツールを使ってMySQLの権限を確認することができます。
- MySQL Administrator
- Sequel Pro
- Navicat for MySQL
MySQLの権限を確認するには、SHOW GRANTS
ステートメント、mysql
コマンドラインツール、MySQL Workbenchなどのツールを使うことができます。
自分に合った方法を選んで、ユーザーの権限を確認しましょう。
mysql> SHOW GRANTS;
+-------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+-------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+-------------------------------------------------------------------------------------------------------------------------------------+
mysqlコマンドラインツールを使って、特定のユーザーの権限を確認する例
$ mysql -u root -p -D test -e "SHOW GRANTS FOR 'user'@'localhost';"
+-------------------------------------------------------------------------------------------------------------------------------------+
| Grants for user@localhost |
+-------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX ON test.* TO 'user'@'localhost' |
+-------------------------------------------------------------------------------------------------------------------------------------+
MySQL Workbenchを使って、ユーザーの権限を確認する例
MySQLの権限を確認するその他の方法
情報スキーマを使う
MySQLの情報スキーマには、ユーザー権限に関する情報が格納されています。
テーブル
mysql.user
: ユーザー情報mysql.db
: データベース権限mysql.tables_priv
: テーブル権限mysql.columns_priv
: カラム権限
# ユーザーの一覧と権限を取得
SELECT user, host, password, super_user, max_connections, max_questions, max_updates, max_user_connections FROM mysql.user;
# 特定のデータベースに対する権限を取得
SELECT user, host, db, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv FROM mysql.db WHERE db = 'database_name';
監査ログを使う
設定
監査ログを有効にするには、my.cnf
ファイルで以下の設定を行います。
log_audit_engine = CSV
log_audit_output = FILE
log_audit_file_path = /var/log/mysql/audit.log
確認
監査ログファイルを確認することで、ユーザーの権限に関する情報を確認することができます。
第三者製ツールを使う
MySQLの権限を確認するための第三者製ツールもいくつかあります。
- MySQL Workbench
これらのツールは、GUIで権限を確認することができるので、初心者にも使いやすいです。
MySQLの権限を確認するには、さまざまな方法があります。
mysql