최신 게시글(DB)
2020.10.03 / 01:15

[MySQL] 데이터베이스 생성하고 사용자에게 권한 부여하기

추석돌이
추천 수 13

데이터베이스 생성하고 사용자에게 권한 부여하기

데이터베이스 추가

1
mysql>CREATE DATABASE testdb;

testdb라는 이름의 database를 추가한다.

사용자 생성

1
mysql>CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'xxxxxx';

testuser라는 이름의 user를 추가한다. (비밀번호는 xxxxxx)

사용자 권한 부여

1
2
mysql>GRANT ALL PRIVILEGES on testdb.* TO 'testuser'@'localhost';
mysql>FLUSH PRIVILEGES;

testuser에게 testdb의 모든 테이블에 대한 모든 권한을 부여한다.

FLUSH PRIVILEGES 명령어도 잊지말고 실행해야 한다.

이제 testuser는 testdb의 INSERT, DELETE 등 모든명령어를 실행할 수 있게된다.

만약 모든 권한이 아니라 일부 권한만 부여하려면 ALL PRIVILEGES 대신 명령어를 나열하면 된다.

1
mysql>GRANT INSERT,UPDATE,INDEX,ALTER ON on testdb.* TO 'testuser'@'localhost';

사용자 조회

사용자 정보는 user 테이블에 저장된다.
user 테이블은 mysql 데이터베이스에 존재하므로 use mysql문을 먼저 실행해야한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql>use mysql;
mysql>SELECT host, user FROM user;
+-----------------------+----------+
| host                  | user     |
+-----------------------+----------+
| 127.0.0.1             | root     |
| ::1                   | root     |
| localhost             |          |
| localhost             | testuser |
| localhost             | root     |
| localhost.localdomain |          |
| localhost.localdomain | root     |
+-----------------------+----------+
7 rows in set (0.00 sec)

사용자 권한 조회

testuser의 권한을 조회한다.

1
2
3
4
5
6
7
8
mysql>SHOW GRANTS FOR 'testuser'@'localhost'
+---------------------------------------------------------------------------+
| Grants for testuser@localhost                                             |
+---------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'testuser'@'localhost' IDENTIFIED BY PASSWORD '...' |
| GRANT ALL PRIVILEGES ON `testdb`.* TO 'testuser'@'localhost'              |
+---------------------------------------------------------------------------+
2 rows in set (0.00 sec)

참고 - 데이터베이스와 사용자 삭제 및 권한 제거

database 삭제

1
mysql>DROP DATABASE testdb;

testdb 데이터베이스를 삭제한다.

사용자 삭제

1
mysql>DROP USER 'testuser'@'localhost';

testuser 사용자를 삭제한다.

모든 권한 제거

1
REVOKE ALL ON testdb.* FROM 'testuser'@'localhost';

testdb에 대한 testuser의 모든 권한을 제거한다.

특정 명령어에 대한 권한을 제거

1
REVOKE DROP ON testdb.* FROM 'testuser'@'localhost';

testdb에 대한 testuser의 DROP 권한을 제거한다.