2017-04-30 6 views
0

Ich versuche, eine gespeicherte Prozedur, die zwei Argumente (Benutzername und Kennwort) dauert und einen Benutzer, der bestimmte Berechtigungen für ein Schema hat. Dies ist, was ich derzeit habe:gespeicherte Prozedur zum Erstellen von 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 

Allerdings gibt mir das Passwort alle Arten von Schwierigkeiten. Was auch immer ich tue, ich kann nicht scheinen, die Variable in das Passwort-Feld, ob es mit der Syntax CREATE USER x IDENTIFIED BY y, oder diese. Was vermisse ich?

+0

Sie benötigen eine dynamische Abfrage für diesen Einsatz – Rahul

Antwort

0

Versuchen unter Prozedur Benutzer erstellen, indem Sie Benutzernamen vorbei und Wort als Parameter übergeben:

Erste Erteilung Zugriff auf Ihre Benutzer Benutzer zu erstellen und das Verfahren auszuführen. 'TEST' ist der angemeldete Benutzername, um eine Prozedur zu erstellen.

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; 
/

Execute Prozedur Benutzer zu erstellen:

EXEC create_admin('NEWUSER', 'NEWUSER1'); 
Verwandte Themen