2017-04-30 5 views
0

두 개의 인수 (사용자 이름과 암호)를 취하는 저장 프로 시저를 만들고 스키마에 대한 특정 권한을 가진 사용자를 만들려고합니다. 현재 내가 가지고있는 것입니다 :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');