it-swarm-ko.com

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

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

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

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

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

어떻게 구할 수 있습니까?

73
Roman

SHOW GRANTS [FOR user] 님이 찾고 계신 것입니다. 자세한 내용은 here 를 참조하십시오.

78
John Gardeniers

다음은 MySQL Documentation for SHOW GRANTS :

SHOW GRANTS [FOR user]

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

mysql> SHOW GRANTS FOR 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for [email protected]                                           |
+---------------------------------------------------------------------+
| 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부터, SHUR GRANTS FOR CURRENT_USER (또는 동등한 구문)가 DEFINER 컨텍스트에서 사용되는 경우 (예 : SQL SECURITY DEFINER로 정의 된 저장 프로 시저 내에서) 표시되는 권한은 정의 자 및 호출자가 아닙니다.

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

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

55
radious