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

MySQL 서버의 모든 데이터베이스와 모든 테이블에 GRANT SELECT 권한을 부여하는 방법

MySQL 서버의 모든 데이터베이스·모든 테이블에 SELECT 권한 부여하기

MySQL 서버에 존재하는 모든 데이터베이스의 모든 테이블에 대해 특정 사용자에게 읽기(SELECT) 권한을 한 번에 부여하려면 GRANT SELECT 문을 활용하면 됩니다. 이 방법은 여러 개의 데이터베이스를 운영하는 환경에서 개별적으로 권한을 설정하는 번거로움을 크게 줄여 줍니다.

1. GRANT SELECT 기본 문법

권한을 부여하는 기본 문법은 아래와 같습니다.

GRANT SELECT ON *.* TO 'yourUserName'@'yourHostName';

여기서 *.*는 '모든 데이터베이스의 모든 테이블'을 의미합니다. 즉, 위 구문을 실행하면 해당 사용자가 서버 전체의 모든 테이블을 조회할 수 있게 됩니다.

2. 기존 사용자 목록 확인하기

권한을 부여하기 전에 먼저 MySQL 서버에 등록된 사용자와 호스트 정보를 확인하는 것이 좋습니다. 다음 쿼리를 실행해 보세요.

mysql> select user,host from mysql.user;

실행 결과 예시는 다음과 같습니다.

+------------------+-----------+
| user             |      host |
+------------------+-----------+
| Bob              |         % |
| Charlie          |         % |
| Robert           |         % |
| User2            |         % |
| mysql.infoschema |         % |
| mysql.session    |         % |
| mysql.sys        |         % |
| root             |         % |
| @UserName@       | localhost |
| Adam             | localhost |
| Adam Smith       | localhost |
| Chris            | localhost |
| David            | localhost |
| Emma             | localhost |
| Jace             | localhost |
| James            | localhost |
| John             | localhost |
| John Doe         | localhost |
| Michael          | localhost |
| Mike             | localhost |
| Robert           | localhost |
| User1            | localhost |
| am               | localhost |
| hbstudent        | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
+------------------+-----------+
26 rows in set (0.00 sec)

위 결과에서 %는 '어떤 호스트에서든 접속 가능함'을 의미하고, localhost는 '해당 서버 내부에서만 접속 가능함'을 뜻합니다.

3. 실제로 GRANT SELECT 적용하기

이번에는 hbstudent@localhost 사용자에게 모든 데이터베이스에 대한 SELECT 권한을 부여해 보겠습니다.

mysql> GRANT SELECT ON *.* TO 'hbstudent'@'localhost';
Query OK, 0 rows affected (0.00 sec)

'Query OK' 메시지가 출력되면 권한 부여가 성공적으로 완료된 것입니다. 이제 hbstudent 사용자는 서버의 모든 데이터베이스와 모든 테이블을 조회할 수 있습니다.


참고: 모든 데이터베이스에 대한 권한을 부여하는 것은 보안상 민감할 수 있으므로, 상황에 따라 특정 데이터베이스나 테이블 단위로 권한 범위를 좁혀 설정하는 것이 더 안전합니다.