Real MySQL 8.0

[Real MySQL-1] 03. 사용자 및 권한(~3.5)

pwhee 2023. 1. 8. 15:15

3.4 권한

글로발 권한: DB 또는 Table 이외의 객체에 적용되는 권한

객체 권한: DB 또는 Table을 제어하는 데 필요한 권한

5.7 버전까지는 글로벌 권한/객체 권한 두가지로 구분했다. 8.0 버전에서는 동적 권한이 추가됨

정적 권한: MySQL 서버 소스코드에 명시된 권한

동적 권한: MySQL 서버가 시작되면서 동적으로 생성되는 권한

GRANT: 사용자에게 권한 부여할 때 사용하는 커맨드

특정 DB, TABLE, COLUMN에 대해 권한 부여 설정 가능. 

COLUMN에 대한 권한 부여는 성능에 영향을 미칠 수 있다. -> 해당 COLUMN에 대해 따로 VIEW를 생성하는게 좋다.

 

3.5 역할

권한들을 묶어서 역할을 정의할 수 있다.

CREATE ROLE 커맨드로 `role_name`에 해당하는 역할을 생성한 후 GRANT 커맨드로 role_name의 실제 권한을 부여한다.

만들어진 역할을 사용자에게 부여하면 된다.

 

사용자는 실제 역할을 사용하려면 SET ROLE `role_name` 커맨드로 역할을 활성화 시켜야 한다.

로그인할 때 자동으로 역할이 활성화되게 하려면 `activate_all_roles_on_login` 시스템 변수를 ON으로 설정하면 된다.

 

MySQL 8.0에서는 USER와 ROLE을 구분하지 않는다.(같은 객체로 보고 같은 TABLE에 저장한다는 의미) ROLE은 account_locked COLUMN값이 Y로 항상 고정되므로 ROLE을 생성한 후에는 해당 역할을 로그인 용도로 사용할 수 없다.