MySQLで自分に付与されている権限(GRANT)を確認する方法
MySQLで付与されている権限を確認する方法
現在のアカウントにどのような権限が付与されているかを確認するには、SHOWコマンドを使用します。基本の構文は次のとおりです。
show grants\G
行末の「\G」は、結果を見やすい縦型フォーマットで表示するための指定です。それでは、実際に上記のコマンドを実行して、自分が持っている権限を表示してみましょう。
mysql> SHOW GRANTS\G
実行すると、次のような出力が得られます。
*************************** 1. row *************************** Grants for root@%: GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `root`@`%` WITH GRANT OPTION *************************** 2. row *************************** Grants for root@%: GRANT BACKUP_ADMIN,BINLOG_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN, PERSIST_RO_VARIABLES_ADMIN,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SET_USER_ID, SYSTEM_VARIABLES_ADMIN,XA_RECOVER_ADMIN ON *.* TO `root`@`%` 2 rows in set (0.00 sec)
出力結果の読み方
この出力からは、root@% アカウントに対して、SELECT・INSERT・UPDATE・DELETEといった基本的なデータ操作権限に加え、RELOADやSHUTDOWNなどの管理系権限、さらに BACKUP_ADMIN や BINLOG_ADMIN といったMySQL 8.0で追加された動的権限まで幅広く付与されていることがわかります。また、「WITH GRANT OPTION」が付与されているため、他のユーザーへ権限を渡すことも可能です。
特定のユーザーの権限を確認するには
現在ログインしているユーザー以外の権限を調べたい場合は、FOR句を使って対象のアカウントを指定します。
mysql> SHOW GRANTS FOR 'user_name'@'host_name';
このようにSHOW GRANTSコマンドを使えば、任意のアカウントに付与された権限を簡単に一覧できます。権限まわりのトラブルシューティングやセキュリティ監査の際にも役立つので、覚えておくと便利です。
-
SQL ServerにMySQLのENUM型に相当する機能はある?代替方法を解説
結論から言うと、SQL ServerにはMySQLのENUMデータ型と完全に同じ組み込みデータ型は存在しません。しかし、VARCHAR型とCHECK制約を組み合わせることで、ENUMとほぼ同等の機能を実現できます。MySQLにおけるENUM型の基本まず、MySQL(バージョン8.0.12で動作確認済み)でのENUM型の定義方法を見てみましょう。構文は以下の通りです。create table yourTableName ( yourColumnName enum(Value1,Value2,Value3,......N) default Value1 or Value2 or Value3,..
-
MySQLストアドプロシージャでSHOW CREATE TABLEを実行する方法
MySQLストアドプロシージャでSHOW CREATE TABLEを実行する方法 ストアドプロシージャの中でSHOW CREATE TABLEを実行したい場合は、動的SQL(プリペアドステートメント)を利用します。SHOW系のコマンドはプロシージャ内に直接記述できないため、SQL文を文字列として組み立てて実行するのがポイントです。 まずはサンプル用のテーブルを作成しましょう。 mysql> create table DemoTable2011 -> ( -> StudentId int NOT NULL AUTO_INCREMENT, -> St