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

MySQL에서 사용자에게 모든 저장 프로시저 접근 권한을 부여하는 방법

개요

MySQL에서 특정 사용자가 데이터베이스의 모든 저장 프로시저(Stored Procedure)를 실행할 수 있도록 권한을 부여하려면 GRANT EXECUTE 문을 사용하면 됩니다. 이 글에서는 전체 사용자 목록을 확인하는 방법부터 실제 권한을 부여하는 과정까지 단계별로 살펴보겠습니다.

1단계: MySQL의 전체 사용자 및 호스트 확인

먼저 mysql.user 테이블을 조회하여 현재 등록된 모든 사용자와 호스트 정보를 확인합니다.

mysql> SELECT user, host FROM mysql.user;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

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

호스트 값이 %인 사용자는 모든 호스트에서 접속 가능하며, localhost로 지정된 사용자는 로컬 서버에서만 접속할 수 있습니다.

2단계: 저장 프로시저 실행 권한 부여

이제 사용자 'Robert'(호스트 %)에게 web 데이터베이스에 있는 모든 저장 프로시저의 실행 권한을 부여해 보겠습니다.

mysql> GRANT EXECUTE ON web.* TO 'Robert'@'%';

권한이 정상적으로 부여되면 다음과 같은 메시지가 출력됩니다.

Query OK, 0 rows affected (0.24 sec)

추가 설명

  • GRANT EXECUTE: 저장 프로시저나 함수를 호출·실행할 수 있는 권한을 의미합니다.
  • web.*: web 데이터베이스 내의 모든 객체(저장 프로시저 포함)에 대해 권한을 적용한다는 뜻입니다. 특정 프로시저에만 권한을 주고 싶다면 web.procedure_name처럼 개별 지정도 가능합니다.
  • 'Robert'@'%': 사용자명과 호스트를 함께 지정하는 형식으로, 호스트가 %이므로 어느 클라이언트에서 접속하더라도 권한이 적용됩니다.

권한 변경 후에는 FLUSH PRIVILEGES; 명령을 실행하여 권한 테이블을 갱신해 주는 것이 좋습니다. 이렇게 하면 해당 사용자는 지정된 데이터베이스의 모든 저장 프로시저를 자유롭게 실행할 수 있습니다.