MySQLサーバー上のすべてのデータベース・すべてのテーブルにSELECT権限を付与する方法
MySQLですべてのデータベース・すべてのテーブルにSELECT権限を付与するには?
MySQLサーバー上のすべてのデータベースのすべてのテーブルに対してSELECT権限を付与したい場合は、GRANT SELECTステートメントを使用します。対象にワイルドカード「*.*」を指定することで、サーバー上の全データベース・全テーブルが一括して権限付与の対象となります。
基本構文
GRANT SELECT ON *.* TO 'yourUserName'@'yourHostName';
手順1:既存ユーザーとホストの一覧を確認する
まず、mysql.userテーブルを参照して、登録されているユーザー名とホストの一覧を確認しましょう。
mysql> select user,host from mysql.user;
このクエリを実行すると、以下のような出力が得られます。
+------------------+-----------+ | user | host | +------------------+-----------+ | Bob | % | | Charlie | % | | Robert | % | | User2 | % | | mysql.infoschema | % | | mysql.session | % | | mysql.sys | % | | root | % | | @UserName@ | localhost | | Adam | localhost | | Adam Smith | localhost | | Chris | localhost | | David | localhost | | Emma | localhost | | Jace | localhost | | James | localhost | | John | localhost | | John Doe | localhost | | Michael | localhost | | Mike | localhost | | Robert | localhost | | User1 | localhost | | am | localhost | | hbstudent | localhost | | mysql.infoschema | localhost | | mysql.session | localhost | +------------------+-----------+ 26 rows in set (0.00 sec)
ここで重要なのは、MySQLのユーザーアカウントは「ユーザー名」と「ホスト」の組み合わせで識別されるという点です。同じユーザー名でも接続元ホストが異なれば別アカウントとして扱われるため、権限を付与する際は両方を正確に指定してください。
手順2:GRANT SELECTを実行する
続いて、実際にSELECT権限を付与するクエリを実行します。ここでは例として、「hbstudent」@「localhost」というユーザーに権限を付与します。
mysql> GRANT SELECT ON *.* TO 'hbstudent'@'localhost'; Query OK, 0 rows affected (0.00 sec)
「Query OK」と表示されれば、権限の付与は成功です。GRANTステートメントによる権限変更は即時に反映されるため、通常はサーバーの再起動やFLUSH PRIVILEGESの実行は不要です(mysql.userテーブルを直接INSERTやUPDATEで編集した場合のみ必要になります)。
付与された権限を確認する
権限が正しく付与されたかどうかは、SHOW GRANTSステートメントで確認できます。
mysql> SHOW GRANTS FOR 'hbstudent'@'localhost';
注意点
GRANT SELECT ON *.*は、システムデータベース(mysqlなど)を含むサーバー上の全テーブルへの読み取りアクセスを許可することになります。そのため、本番環境で実行する場合は、最小権限の原則に基づき、本当に全データベースへの参照が必要なアカウントかどうかを十分に検討してから適用することをおすすめします。
-
MySQLで特定のカラム名を持つテーブルを検索する方法
MySQLで特定のカラム名(列名)を持つテーブルを探したい場合は、システムビューである information_schema.columns を利用します。このビューにはデータベース内のすべてのテーブルとカラムの情報が格納されているため、条件を指定して検索するだけで、目的のカラムを持つテーブルを簡単に特定できます。 基本構文 カラム名からテーブル名を検索する際の基本的な構文は以下の通りです。 select distinct table_name from information_schema.columns where column_name like %yourSearchValue% a
-
MySQLで全テーブルから特定のカラムを検索する方法|INFORMATION_SCHEMAの活用
MySQLでカラムの存在を確認する基本アプローチMySQLにおいて、データベース内のどのテーブルに特定のカラムが存在するかを調べたい場面は少なくありません。そんなときに役立つのが、システムビューである INFORMATION_SCHEMA.COLUMNS です。このビューを参照することで、スキーマ全体を横断して目的のカラムを持つテーブルを一括で特定できます。基本的な構文は以下のとおりです。SELECT table_name, column_nameFROM INFORMATION_SCHEMA.COLUMNSWHERE table_schema = SCHEMA()AND column_nam