使用变量在MySQL中创建用户?


您可以为此使用动态查询。首先设置用户名变量名和密码变量名。语法如下:

SET @anyVariableName=’yourUserName’;
SET @anyVariableName1=’yourpassword’;

现在您可以使用MySQL中的CONCAT()函数。语法如下:

SET @yourQueryName = CONCAT
('
   CREATE USER "',@anyVariableName,'"@"localhost" IDENTIFIED BY "',@anyVariableName1,'" '
);

让我们使用准备好的语句PREPARE。语法如下:

PREPARE yourStatementVariableName FROM @yourQueryName;

现在您可以执行语句了。语法如下:

EXECUTE yourStatementVariableName;

使用DEALLOCATE PREPARE取消分配上述内容。语法如下:

DEALLOCATE PREPARE yourStatementVariableName;

为了理解上述语法,让我们按照所有步骤操作:

步骤1 - 首先使用SET命令创建两个变量,一个用于用户名,另一个用于密码。

创建用户名的查询如下:

mysql> set @UserName:='John Doe';
Query OK, 0 rows affected (0.00 sec)

创建密码的查询。

mysql> set @Password:='John Doe 123456';
Query OK, 0 rows affected (0.00 sec)

步骤2 - 现在使用CONCAT()函数创建用户。查询如下:

mysql> SET @CreationOfUser = CONCAT('
   '> CREATE USER "',@UserName,'"@"localhost" IDENTIFIED BY "',@Password,'" '
   -> );
Query OK, 0 rows affected (0.02 sec)

在上面的查询中,我们使用了@UserName变量名和@Password变量名来创建具有名称和密码的用户。

步骤3 - 现在您需要使用上面定义的用户变量@CreationOfUser准备语句。查询如下:

mysql> PREPARE st FROM @CreationOfUser;
Query OK, 0 rows affected (0.00 sec)
Statement prepared

步骤4 - 执行上面准备好的语句。查询如下:

mysql> EXECUTE st;
Query OK, 0 rows affected (0.37 sec)

步骤5 - 检查用户“John Doe”是否已在MySQL.user表中创建:

mysql> select user,host from MySQL.user;

以下是输出:

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| Manish           | %         |
| User2            | %         |
| mysql.infoschema | %         |
| mysql.session    | %         |
| mysql.sys        | %         |
| root             | %         |
| @UserName@       | localhost |
| Adam Smith       | localhost |
| John             | localhost |
| John Doe         | localhost |
| User1            | localhost |
| am               | localhost |
| hbstudent        | localhost |
+------------------+-----------+
13 rows in set (0.00 sec)

是的,我们有一个名为John Doe的用户。

步骤6 - 现在,取消分配准备好的语句。查询如下:

mysql> DEALLOCATE PREPARE st;
Query OK, 0 rows affected (0.00 sec)

更新于: 2019年7月30日

905 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.