用于创建mysql.user的存储过程

用于创建mysql.user的存储过程,mysql,sql,stored-procedures,ddl,Mysql,Sql,Stored Procedures,Ddl,我正在尝试创建一个存储过程,它将接受两个参数username和password,并创建一个在模式上具有特定授权的用户。这就是我目前拥有的: CREATE PROCEDURE `create_admin` ( IN userName VARCHAR(60), IN userPass VARCHAR(60)) BEGIN CREATE USER userName@'%'; SET PASSWORD FOR userName@'%' = PASSWORD(userPass); GRANT DELET

我正在尝试创建一个存储过程,它将接受两个参数username和password,并创建一个在模式上具有特定授权的用户。这就是我目前拥有的:

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

然而,密码给了我各种各样的麻烦。无论我做什么,我似乎都无法将变量插入密码字段,无论是使用y语法标识的createuserx还是这个。我缺少什么?

请尝试以下过程,通过传递用户名和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');

您需要为此使用动态查询