DB/MySQL

[MySQL] 사용자 검색/추가/삭제 및 권한 설정

야곰야곰+책벌레 2021. 4. 16. 14:30
728x90
반응형

1. MySQL 사용자 조회

MySQL에서 생성된 사용자를 확인하려면 아래와 같다.

  host : 접속이 허용된 ip 주소. ( % 는 어디에서 접속하여도 OK! )
  user : 등록된 사용자 ID
MariaDB [mysql]> SELECT host,user FROM user;
+-----------+--------+
| host      | user   |
+-----------+--------+
| %         | bskim  |
| %         | guest  |
| %         | hdjang |
| %         | root   |
| %         | shson  |
| %         | yjcho  |
| localhost | root   |
+-----------+--------+
7 rows in set (0.000 sec)
MariaDB [mysql]> 

 

2. MySQL 사용자 생성

MySQL에서 사용자를 생성하기 위해서는 root 계정으로 접속하거나 계정 관리 권한이 있는 사용자로 접속하면 된다.

생성 : CREATE user '사용자'@'허용 IP' IDENTIFIED BY '비밀번호';
권한 설정 : GRANT 권한 종류 PRIVILEGES ON 허용데이터베이스 TO '사용자'@'허용 IP';
    - 권한 종류 : SELECT UPDATE INSERT ... 등등의 사용할 수 있는 SQL 명령어 , 모든 권한은 ALL
-- USER 생성 ( ID : Tester , Password : 1234 )
MariaDB [(none)]> CREATE user 'Tester'@'%' IDENTIFIED BY '1234';
Query OK, 0 rows affected (0.001 sec)

-- 권한 설정 ( ALL : 모든 권한 )
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'Tester'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.000 sec)

-- 부여된 권한 확인
MariaDB [(none)]> SHOW GRANTS FOR 'Tester'@'%';
+----------------------------------------------------------------------------------------------------------------------------------+
| Grants for Tester@%                                                                                                              |
+----------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `Tester`@`%` IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)

-- stsodb DATABASE의 SELECT만 사용 가능
MariaDB [(none)]> GRANT SELECT ON stsodb.* TO 'Tester'@'%';
Query OK, 0 rows affected (0.001 sec)

-- stsodb DATABASE의 SELECT, UPDATE만 사용 가능
MariaDB [(none)]> GRANT SELECT,UPDATE ON stsodb.* TO 'Tester'@'%';
Query OK, 0 rows affected (0.000 sec)

-- 모든 권한 회수
MariaDB [(none)]> REVOKE ALL ON *.* FROM 'Tester'@'%';
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]>

 

GRANT 명령어를 사용할 때 마지막에 WITH GRANT OPTION 구문을 붙일 수 있는데 이것은 다른 사람에게 부여한 권한을 또 다른 사람에게 부여할 권한을 주는 OPTION이다.
-- mysql DATABASE 사용
MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

-- 비밀번호 변경
MariaDB [mysql]> UPDATE user SET password=PASSWORD('123') WHERE user='Tester';
Query OK, 1 row affected (0.001 sec)
Rows matched: 1  Changed: 1  Warnings: 0

-- 변경된 내용을 갱신다.
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]>

 

사용자 정보는 mysql DATABASE의 user TABLE에 존재하기 때문에 mysql DATABASE를 사용한다.

FLUSH PRIVILEGES를 실행하여 정보를 RELOAD 될 때까지는 기존 비밀번호로 유지된다.

FLUSH PRIVILEGES는 DB에 많은 부하를 주는 명령어이기 때문에 EVENT 시 사용하도록 한다.

 

3. MySQL 사용자 삭제

-- mysql DATABASE 사용
MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

-- 사용자 삭제
MariaDB [mysql]> DELETE FROM user WHERE user='Tester';
Query OK, 1 row affected (0.001 sec)

-- 사용자 권한 삭제
MariaDB [mysql]> DELETE FROM user WHERE user='Tester_grant';
Query OK, 0 rows affected (0.000 sec)

-- 데이터 갱신
MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

MariaDB [mysql]>

  DELETE 대신에 DROP을 사용하여도 된다.

 

728x90
반응형