2012-04-10 22 views
18

ユーザがデータベース内のストアドプロシージャを実行するのではなく、MySQLデータベースのストアドプロシージャレベルでストアドプロシージャを実行する権限をユーザに与えようとしています。私は、次のコードを実行しようとしていた。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を使用してストアドプロシージャレベルで権限を与える方法がないようです。これは正しいのですか、何か不足していますか?

ありがとうございます。

答えて

27

あなたの2番目の試みはeを進めるための正しい方法です。グラム

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

それがチェック

が動作していない場合a)は、あなた(あなたはすべてのこれらのコマンドを実行しているから、ユーザが)のグラント権 を持っている[GRANT OPTION付きすなわち]。あなたがroot権限を持っていれば、そのユーザは

です。b)実行許可を与えるユーザが存在していることを確認します。グラム

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

例えばこれは、MySQL Workbenchをについてあなたの質問の他の部分に答えるために:)

+0

Imは、ルートとしてログインしてコードを実行しているときにユーザが存在する:mysql.userからユーザーのテスト% 'のような選択をユーザに。しかし、私はまだ同じエラーが発生しているようです。 – Olly

+0

私が示唆したように新しいユーザーを追加しようとしました。 – sakhunzai

+2

もう一度パスワードを入力してください: '猶予実行' myDB.spName TO 'TestUser' @ 'localhost' 'password'; ' – sakhunzai

1

を助けるかもしれない

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

希望を、新しいユーザーを追加していない場合、私は同じ問題を抱えていました。しかし、実験を行った後、ロールを作成し、その下にある[権限]タブを開くと、モデルの概要からオブジェクトボックスにルーチンをドラッグできることが分かりました。そこから、新しく追加されたオブジェクトをクリックし、その役割に必要な権限を追加します。

ホープ役立つこと:)

関連する問題