我尝试创建一个存储过程,该过程将采用两个参数(用户名和密码),并使用户在模式上具有某些授权。这就是我目前所拥有的:
CREATE PROCEDURE `create_admin` (
IN userName VARCHAR(60),
IN userPass VARCHAR(60))
BEGIN
CREATE USER userName@'%';
SET PASSWORD FOR userName@'%' = PASSWORD(userPass);
GRANT DELETE,EXECUTE,INSERT,SELECT, UPDATE ON kairos.* TO userName@'%';
SHOW GRANTS FOR userName@'%';
END
但是,密码给我带来了各种麻烦。无论我做什么,我似乎无法将变量放在密码字段中,无论是使用CREATE USER x IDENTIFIED BY y语法,还是使用此语法。我错过了什么?
答案 0 :(得分:0)
尝试以下过程通过传递用户名并将word作为参数传递来创建用户:
首先授予您的用户访问权限以创建用户和执行过程。 ' 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');