32

ユーザーがデータベース内の任意のストアドプロシージャを実行できるようにするのではなく、MySQLデータベース上のストアドプロシージャレベルでストアドプロシージャを実行する権限をユーザーに付与しようとしています。私は次のコードを実行しようとしていました:

GRANT EXECUTE ON myDB.spName TO 'TestUser'@'localhost';

しかし、私は次のエラーを受け取り続けます:

Illegal GRANT/REVOKE command, please consult the manual to see which privileges can be used.

次のように変更してみました。

GRANT EXECUTE ON PROCEDURE myDB.spName TO 'TestUser'@'localhost';

そして、次のような別のエラーが発生します。

Cant find any matching rows in the user table.

私はどこが間違っているのか混乱していますか?

また、MySQL Workbenchでは、GUIを介してストアドプロシージャレベルでアクセス許可を付与する方法が見当たらないようです。これは正しいですか、それとも何かが足りませんか?

前もって感謝します。

4

3 に答える 3

52

2番目の試みは正しいアプローチです。

GRANT EXECUTE ON PROCEDURE myDB.spName TO 'TestUser'@'localhost';

しかし、それが機能しない場合は、確認してください...

a)あなた(これらすべてのコマンドを実行しているユーザー)には、付与権限があります[つまり、WITHGRANTOPTION]。あなたがルートである場合、あなたは付与権を持っています。

b)実行権限を付与しているユーザーが存在します。

 select user from mysql.user where user  like  'test%';

そうでない場合は、ユーザーを作成します。

CREATE USER 'TestUser'@'localhost' IDENTIFIED BY 'passwordxxxx';
#depending on your needs
GRANT SELECT,DELETE,UPDATE PRIVILEGES ON myDb.* TO 'TestUser'@'localhost'; 

お役に立てれば :)

于 2012-04-10T13:29:32.147 に答える
5

MySQL Workbenchに関する質問の他の部分に答えるために、私は同じ問題を抱えていました。しかし、実験した結果、役割を作成して下部にある[権限]タブを開くと、ルーチンを[モデルの概要]から[オブジェクト]ボックスにドラッグできることがわかりました。そこから、新しく追加されたオブジェクトをクリックして、そのロールに必要な権限を追加します。

お役に立てば幸いです:)

于 2015-10-14T18:19:44.260 に答える
1

私はこのコードを見つけました:ストアドプロシージャにアクセス許可を付与します

USE [Database];   

GRANT EXECUTE ON OBJECT::[dbo].[your stored procedure]
    TO databaseUser; 

このページから:docs.microsoft.com

于 2021-03-23T13:20:16.580 に答える