MySQL에서 사용자 권한을 어떻게 표시 할 수 있습니까?


69

다음과 같은 간단한 방법으로 사용자 권한을 설정할 수 있음을 알고 있습니다.

grant all on [database name].[table name] to [user name]@[host name];

그러나 기존 권한을 어떻게 볼 수 있습니까?

보조금에 사용되는 것과 유사한 데이터를 볼 필요가 있습니다. 즉, 주어진 사용자가 주어진 호스트에서 주어진 데이터베이스의 주어진 테이블에 대한 주어진 액세스 권한을 가지고 있음을 알고 싶습니다.

어떻게 구할 수 있습니까?

답변:



51

다음은 MySQL 설명서 입니다 SHOW GRANTS.

SHOW GRANTS [FOR user]

이 문은 MySQL 사용자 계정에 부여 된 권한을 복제하기 위해 발행해야하는 GRANT 문을 나열합니다. 계정 이름은 GRANT 문과 동일한 형식으로 지정됩니다. 예를 들어 'jeffrey'@ 'localhost'입니다. 계정 이름의 사용자 이름 부분 만 지정하면 '%'의 호스트 이름 부분이 사용됩니다. 계정 이름 지정에 대한 자세한 내용은 12.5.1.3 절“GRANT 구문”을 참조하십시오.

mysql> SHOW GRANTS FOR 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+

서버 연결에 사용중인 계정에 부여 된 권한을 나열하려면 다음 명령문 중 하나를 사용할 수 있습니다.

SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();

MySQL 5.0.24부터, CURRENT_USER (또는 동등한 구문)에 대한 SHOW GRANTS FOR CURRENT_USER (또는 동등한 구문)가 DEFINER 컨텍스트에서 사용되는 경우 (예 : SQL SECURITY DEFINER로 정의 된 저장 프로 시저 내에서) 표시되는 권한은 정의 자 및 호출자가 아닙니다.

SHOW GRANTS는 명명 된 계정에 명시 적으로 부여 된 권한 만 표시합니다. 계정에 다른 권한이있을 수 있지만 표시되지는 않습니다. 예를 들어, 익명 계정이 존재하면 명명 된 계정이 해당 권한을 사용할 수 있지만 SHOW GRANTS는이를 표시하지 않습니다.

SHOW GRANTS에는 mysql 데이터베이스에 대한 SELECT 권한이 필요합니다.


SHOW GRANTS requires the SELECT privilege for the mysql system database, except to display privileges and roles for the current user.
Sandip Bhattacharya
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.