본문 바로가기
Database/Database 명령어

MySQL MariaDB 계정 관리/권한설정/외부접근

by 시스파고 2020. 6. 11.

 

DB에 root 계정을 외부에서 접근하는 것은 보안상 바람직한 방법이 아니므로 새로운 계정을 생성하여 외부에서 접근이 가능하도록 권한설정을 해보겠습니다. root는 현재 localhost에서만 접근이 가능한 상태로 되어 있습니다.

1
2
3
4
5
6
7
8
9
MariaDB [mysql]> select host, user, password from user;
+----------------+------+-------------------------------------------+
| host           | user | password                                  |
+----------------+------+-------------------------------------------+
| localhost      | root | *FE77F6274099B26A5DD565E9898AA22FF1A714BC |
| localhost      |      |                                           |
| mariadb-master |      |                                           |
+----------------+------+-------------------------------------------+
3 rows in set (0.00 sec)
 
cs

 

1. DB 신규 계정 생성 및 삭제

신규 계정을 생성할때 syspago@'%'의 의미는 syspaog는 계정 ID / '%'는 모든 IP로부터 접근이 가능하다는 것이다. 만약에 특정 IP만 접근이 가능하게 하려면 syspago@192.168.10.12의 형식으로 진행하면 된다. 

- create user syspago@'%' identified by 'new-password';

- drop user syspago;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
MariaDB [mysql]> create user syspago@'%' identified by 'new-password';
Query OK, 0 rows affected (0.00 sec)
 
MariaDB [mysql]> select host, user, password from user;
+----------------+---------+-------------------------------------------+
| host           | user    | password                                  |
+----------------+---------+-------------------------------------------+
| localhost      | root    | *FE77F6274099B26A5DD565E9898AA22FF1A714BC |
| %              | syspago | *FE77F6274099B26A5DD565E9898AA22FF1A714BC |
| localhost      |         |                                           |
| mariadb-master |         |                                           |
+----------------+---------+-------------------------------------------+
4 rows in set (0.00 sec)
 
MariaDB [mysql]> drop user syspago;
Query OK, 0 rows affected (0.00 sec)
 
MariaDB [mysql]> select host, user, password from user;
+----------------+------+-------------------------------------------+
| host           | user | password                                  |
+----------------+------+-------------------------------------------+
| localhost      | root | *FE77F6274099B26A5DD565E9898AA22FF1A714BC |
| localhost      |      |                                           |
| mariadb-master |      |                                           |
+----------------+------+-------------------------------------------+
3 rows in set (0.00 sec)
 
cs

 

1.1 생성한 계정 drop이 안될 경우에는 다음과 같은 방법으로 시도해볼 것!

@host의 정보까지 모두 기입하여 진행하면 된다.

1
2
3
4
5
MariaDB [mysql]> drop user syspago;
ERROR 1396 (HY000): Operation DROP USER failed for 'syspago'@'%'
 
MariaDB [mysql]> drop user syspago@192.168.10.12;
Query OK, 0 rows affected (0.00 sec)
cs

 

2. 데이터베이스 사용권한 설정

사용권한 설정에 앞서 간단한 쿼리문의 의미를 파악해보자. 주황색 부분은 환경에 맞게 설정되어지는 부분이다.

 

2.1 권한 추가 : grant all privileges on Database.Table to User@Host;

     Database.Table에 접근할 수 있는 모든권한을 User@Host에 부여한다.

     all privileges => select, insert 등으로 변경 가능

 

현재 syspaog계정의 권한 설정값을 확인하고 새로운 권한을 부여했다. 그 다음 다시 권한이 제대로 들어갔는지 확인하는 작업이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
MariaDB [mysql]> show grants for syspago@'%';
+-------------------------------------+
| Grants for syspago@%                |
+-------------------------------------+
| GRANT USAGE ON *.* TO 'syspago'@'%' |
+-------------------------------------+
1 row in set (0.00 sec)
 
MariaDB [mysql]> grant all privileges on *.* to syspago@'%' identified by 'new-password';
Query OK, 0 rows affected (0.00 sec)
 
MariaDB [mysql]> show grants for syspago@'%';
+-----------------------------------------------------------------------------------------------------------------+
| Grants for syspago@%                                                                                            |
+-----------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'syspago'@'%' IDENTIFIED BY PASSWORD '*FE77F6274099B26A5DD565E9898AA22FF1A714BC' |
+-----------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
 
cs

 

2.2 권한 제거 : revoke all privileges on Database.Table from User@Host;

      Database.Table에 접근할 수 있는 모든권한을 User@Host에서 제거한다.

1
2
3
4
5
6
7
8
9
10
MariaDB [mysql]> revoke all privileges on *.* from syspago@'%';
Query OK, 0 rows affected (0.00 sec)
 
MariaDB [mysql]> show grants for syspago@'%';
+--------------------------------------------------------------------------------------------------------+
| Grants for syspago@%                                                                                   |
+--------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'syspago'@'%' IDENTIFIED BY PASSWORD '*FE77F6274099B26A5DD565E9898AA22FF1A714BC' |
+--------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
 
cs

 

'Database > Database 명령어' 카테고리의 다른 글

MySQL MariaDB root 비밀번호 설정  (1) 2020.06.10

댓글