MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでユーザーに全ストアドプロシージャへのアクセス権限を付与する方法

MySQLですべてのストアドプロシージャへのアクセス権限をユーザーに許可する手順

MySQLでは、GRANT EXECUTE 構文を使用することで、特定のユーザーに対してデータベース内のすべてのストアドプロシージャ(およびストアドファンクション)を実行する権限を簡単に付与できます。ここでは、その具体的な手順を順を追って解説します。

ステップ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 Smith | localhost |
| Chris | localhost |
| David | localhost |
| James | localhost |
| John | localhost |
| John Doe | localhost |
| User1 | localhost |
| am | localhost |
| hbstudent | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
+------------------+-----------+
20 rows in set (0.00 sec)

この一覧の中から、権限を付与したいユーザー名とホスト名を確認します。

ステップ2:EXECUTE権限の付与

続いて、ユーザー「Robert」に対し、web データベース内のすべてのストアドプロシージャへのアクセス権限(実行権限)を付与します。

mysql> GRANT EXECUTE ON web.* TO 'Robert'@'%';

コマンドが正常に完了すると、以下のようなメッセージが表示されます。

Query OK, 0 rows affected (0.24 sec)

構文のポイント

  • GRANT EXECUTE ON データベース名.* TO 'ユーザー名'@'ホスト名'; — 「.*」を指定することで、そのデータベース内のすべてのストアドルーチンに対する実行権限が一度に付与されます。
  • ホスト名に「%」を指定すると、任意のホストからの接続に対して権限が適用されます。
  • 特定のユーザーやホストが見つからない場合は、ステップ1の出力結果と照らし合わせて正確なユーザー名・ホスト名を指定してください。

これで、ユーザー「Robert」は web データベース内のすべてのストアドプロシージャを実行できるようになります。権限の変更は即座に反映されるため、MySQLサーバーの再起動は不要です。

  1. MySQLで特定ユーザーの全権限(GRANT)を確認する方法

    MySQLでは、サーバーに登録されているユーザーアカウントや、それぞれのユーザーが持つ権限(GRANT)をSQL文で簡単に確認できます。この記事では、まず全ユーザーの一覧を表示し、その後に特定のユーザーに付与されているすべての権限を確認する手順を解説します。 1. 登録されている全ユーザーとホスト名を表示する まず、mysql.user テーブルに対してSELECT文を実行し、ユーザー名(user)とホスト名(host)の一覧を取得します。 mysql> select user,host from MySQL.user; 実行すると、以下のようにユーザーごとのホスト情報が出力されます。

  2. MySQLサーバー上のすべてのデータベース・すべてのテーブルにSELECT権限を付与する方法

    MySQLですべてのデータベース・すべてのテーブルにSELECT権限を付与するには?MySQLサーバー上のすべてのデータベースのすべてのテーブルに対してSELECT権限を付与したい場合は、GRANT SELECTステートメントを使用します。対象にワイルドカード「*.*」を指定することで、サーバー上の全データベース・全テーブルが一括して権限付与の対象となります。基本構文GRANT SELECT ON *.* TO yourUserName@yourHostName;手順1:既存ユーザーとホストの一覧を確認するまず、mysql.userテーブルを参照して、登録されているユーザー名とホストの一覧を確