티스토리 뷰

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

 

1.데이터베이스 추가

mysql>CREATE DATABASE testdb;

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

 

2. 사용자 생성

mysql>CREATE USER 'testuser'@'localhost' IDENTIFIED BY '12345678';

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

3. 사용자 권한 부여

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

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

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

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

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

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

4. 사용자 조회

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

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)

5. 사용자 권한 조회

testuser의 권한을 조회한다.

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)

 

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

1.database 삭제

mysql>DROP DATABASE testdb;

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

2. 사용자 삭제

testuser 사용자를 삭제한다.

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

3. 모든 권한 제거

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

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

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

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

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