이를 위해 동적 쿼리를 사용할 수 있습니다. 먼저 사용자 이름에 대한 변수 이름과 암호에 대한 변수 이름을 설정합니다. 구문은 다음과 같습니다 -
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단계 − 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 Do의 사용자 이름이 있습니다.
6단계 − 이제 준비된 명령문을 DEALLOCATE합니다. 쿼리는 다음과 같습니다 -
mysql> DEALLOCATE PREPARE st; Query OK, 0 rows affected (0.00 sec)