MySQL 使用变量创建用户?
mysqlmysqli database
您可以使用动态查询来实现这一点。首先设置用户名的变量名和密码的变量名。语法如下 −
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)
The query to create a password.
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 −检查 MySQL.user 表中是否已创建用户"John Doe" −
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 − 现在,DEALLOCATE 准备好的语句。查询如下 −
mysql> DEALLOCATE PREPARE st; Query OK, 0 rows affected (0.00 sec)