2017-04-30 5 views
0

私は2つの引数(ユーザー名とパスワード)をとるストアドプロシージャを作成しようとしており、スキーマに対して特定の権限を持つユーザーを作成します。これは私が現在持っているものです:mysql.userを作成するためのストアドプロシージャ

CREATE PROCEDURE `create_admin` (
IN userName VARCHAR(60), 
IN userPass VARCHAR(60)) 
BEGIN 

CREATE USER [email protected]'%'; 
SET PASSWORD FOR [email protected]'%' = PASSWORD(userPass); 
GRANT DELETE,EXECUTE,INSERT,SELECT, UPDATE ON kairos.* TO [email protected]'%'; 
SHOW GRANTS FOR [email protected]'%'; 

END 

しかし、パスワードは私にあらゆる種類のトラブルを与えています。私が何をするにしても、CREATE USER x IDENTIFIED BYの構文を使用しているかどうかにかかわらず、パスワードフィールドに変数に固執するように見えません。私は何が欠けていますか?ユーザーを作成し、プロシージャを実行するユーザーに

まずアクセス権限を与え:

+0

あなたはこのために、動的クエリを使用する必要があります – Rahul

答えて

0

は、ユーザー名を渡すことで、ユーザーを作成し、パラメータとして単語を渡すために、手順の下に試してみてください。 'TEST'は、プロシージャを作成するためにログインしたユーザー名です。

GRANT CREATE USER TO TEST; 

CREATE OR REPLACE PROCEDURE create_admin(
    userName IN VARCHAR2, 
    userPass IN VARCHAR2) 
IS 
    SQLTest VARCHAR2 (32767); 
BEGIN 
    SQLTest := 'CREATE USER "'||userName||'" IDENTIFIED BY "'||userPass||'"'; 
    EXECUTE IMMEDIATE SQLTest; 
END create_admin; 
/

ユーザーを作成する手順を実行します。

EXEC create_admin('NEWUSER', 'NEWUSER1'); 
関連する問題