Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 제한된 권한을 가진 사용자를 생성하는 방법

데이터베이스 운영 시 보안을 위해 모든 사용자에게 관리자 권한을 부여하는 것은 위험합니다. 이번 글에서는 MySQL에서 필요한 권한만 제한적으로 부여받은 사용자를 생성하는 방법을 알아보겠습니다.

1. 사용자 계정 생성하기

먼저 다음 문법을 사용하여 새로운 MySQL 사용자를 생성합니다.

CREATE USER '사용자이름'@'호스트명' IDENTIFIED BY '비밀번호';

2. 제한된 권한 부여하기

사용자가 생성되면 GRANT 명령어를 통해 해당 사용자에게 특정 권한만 선택적으로 부여할 수 있습니다.

GRANT SELECT, INSERT, UPDATE 등의 권한
ON 데이터베이스이름.* TO '사용자이름'@'호스트명';

위 문법에서는 SELECT, INSERT, UPDATE 외에도 DELETE, ALTER, CREATE, REFERENCES 등 필요한 권한만 쉼표로 구분하여 나열하면 됩니다. 나열하지 않은 권한(예: DROP, GRANT OPTION)은 사용자에게 부여되지 않으므로, 최소 권한 원칙(Principle of Least Privilege)에 따라 실제로 필요한 권한만 부여하는 것이 좋습니다.

3. 실제 예제

이제 위 문법을 실제로 적용하여 'test' 데이터베이스에 대해 제한된 권한을 가진 사용자 'David'를 생성해 보겠습니다.

mysql> CREATE USER 'David'@'localhost' IDENTIFIED BY 'david';
Query OK, 0 rows affected (0.20 sec)
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, ALTER, CREATE, REFERENCES
   ON test.* TO 'David'@'localhost';
Query OK, 0 rows affected (0.21 sec)

실행 결과를 보면 두 쿼리 모두 오류 없이 정상적으로 처리된 것을 확인할 수 있습니다.

  • CREATE USER: 'localhost'에서 접속하는 'David'라는 사용자를 비밀번호 'david'와 함께 생성했습니다.
  • GRANT: 'test' 데이터베이스의 모든 테이블(*)에 대해 SELECT, INSERT, UPDATE, DELETE, ALTER, CREATE, REFERENCES 권한을 부여했습니다.

4. 사용자 생성 확인하기

사용자가 제대로 생성되었는지 확인하려면 MySQL 시스템 테이블을 조회합니다.

mysql> select user, host from mysql.user;

이 쿼리는 다음과 같은 결과를 출력합니다.

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| Bob              | %         |
| User2            | %         |
| mysql.infoschema | %         |
| mysql.session    | %         |
| mysql.sys        | %         |
| root             | %         |
| @UserName@       | localhost |
| Adam Smith       | localhost |
| David            | localhost |
| James            | localhost |
| John             | localhost |
| John Doe         | localhost |
| User1            | localhost |
| am               | localhost |
| hbstudent        | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
+------------------+-----------+
17 rows in set (0.00 sec)

결과 목록에서 host가 'localhost'인 'David' 사용자가 포함되어 있는 것을 확인할 수 있습니다. 이로써 제한된 권한을 가진 MySQL 사용자 생성이 성공적으로 완료되었습니다.