본문 바로가기
Database/MySQL

[MySQL] 사용자 계정을 생성, 삭제 및 계정 목록을 확인하는 명령어 및 예제 정리 - CREATE USER, DROP USER

by Blue Developer 2021. 9. 27.

들어가기에 앞서

본 게시물은 'MySQL 8.0' 버전을 이용한 '명령 프롬프트(cmd)' 환경에서 작성한 코드를 토대로 만들어졌습니다.

이번 게시물에서는 root 계정 외에 별도의 사용자 계정을 생성하고 삭제하는 명령어를 알아보도록 하겠습니다.

사용자 계정 목록 확인

mysql> USE mysql;
Database changed

mysql> SELECT host, user, authentication_string FROM user;
+-----------+------------------+------------------------------------------------------------------------+
| host      | user             | authentication_string                                                  |
+-----------+------------------+------------------------------------------------------------------------+
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root             | *9A6E53B4FC885166A28210032F06DDFCA0B62BC6                              |
+-----------+------------------+------------------------------------------------------------------------+
4 rows in set (0.00 sec)

사용자 계정을 생성하기 전에 현재 MySQL 내에 존재하는 계정 목록을 확인한 결과입니다.

여기서 host는 호스트명, user는 사용자 ID, authentication_string은 비밀번호를 뜻합니다.

CREATE USER - 사용자 계정 생성

# 사용자 ID가 test이고 비밀번호가 1234인 사용자 계정을 생성
mysql> CREATE USER test [IDENTIFIED BY '1234'];
Query OK, 0 rows affected (0.01 sec)

# 사용자 ID가 test1이고 비밀번호가 1234이면서 localhost를 통해서만 접속이 가능한 사용자 계정을 생성
mysql> CREATE USER test1@localhost [IDENTIFIED BY '1234'];
Query OK, 0 rows affected (0.01 sec)

# 사용자 ID가 test2이고 비밀번호가 1234이면서 외부 접속이 가능한 사용자 계정을 생성
mysql> CREATE USER test2@'%' [IDENTIFIED BY '1234'];
Query OK, 0 rows affected (0.01 sec)

"IDENTIFIED BY '비밀번호'"는 해당 계정에 접속하려고 시도할 때 요구되는 비밀번호를 설정해줍니다.

비밀번호를 설정해주지 않아도 계정 생성에 문제는 없지만 웬만하면 설정해주도록 합니다.

mysql> SELECT host, user, authentication_string FROM user;
+-----------+------------------+------------------------------------------------------------------------+
| host      | user             | authentication_string                                                  |
+-----------+------------------+------------------------------------------------------------------------+
| %         | test             | *A4B6157319038724E3560894F7F932C8886EBFCF                              |
| %         | test2            | *A4B6157319038724E3560894F7F932C8886EBFCF                              |
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root             | *9A6E53B4FC885166A28210032F06DDFCA0B62BC6                              |
| localhost | test1            | *A4B6157319038724E3560894F7F932C8886EBFCF                              |
+-----------+------------------+------------------------------------------------------------------------+
7 rows in set (0.00 sec)

사용자 계정 목록을 조회한 결과, 'test'와 'test2'를 생성하는 방법에 차이가 없음을 알 수 있습니다.

DROP USER - 사용자 계정 삭제

# 사용자 ID가 test인 사용자 계정 삭제
mysql> DROP USER test;

# 사용자 ID가 test1이고 localhost를 통해서만 접속 가능한 사용자 계정을 삭제
mysql> DROP USER test1@localhost;

# 사용자 ID가 test2이고 외부에서 접속 가능한 사용자 계정을 삭제
mysql> DROP USER test2@'%';

사용자 계정을 삭제하는 명령어입니다.

댓글