【问题标题】:stored procedure for creating mysql.user创建mysql.user的存储过程
【发布时间】:2017-04-30 18:36:51
【问题描述】:

我正在尝试创建一个存储过程,该过程将采用两个参数(用户名和密码),并将创建一个对架构具有某些授权的用户。这是我目前拥有的:

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 语法,还是这个语法。我错过了什么?

【问题讨论】:

  • 您需要为此使用动态查询

标签: mysql sql stored-procedures ddl


【解决方案1】:

尝试以下程序通过传递用户名和密码作为参数来创建用户:

首先授予您的用户访问权限以创建用户并执行过程。 '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');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 2016-11-11
    • 2021-12-08
    • 2017-10-14
    • 2021-07-10
    • 2015-08-27
    • 1970-01-01
    相关资源
    最近更新 更多