Loading...
MySQL 9.5 Reference Manual 9.5의 8.2.2 Privileges Provided by MySQL의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
MySQL 계정에 부여된 권한은 해당 계정이 수행할 수 있는 작업을 결정합니다. MySQL 권한은 적용되는 컨텍스트 및 작업의 서로 다른 수준에 따라 차이가 있습니다:
관리 권한은 사용자가 MySQL 서버의 운영 관리를 수행할 수 있도록 합니다. 이러한 권한은 특정 데이터베이스에 국한되지 않으므로 전역(global)입니다.
데이터베이스 권한은 데이터베이스와 그 안의 모든 객체에 적용됩니다. 이러한 권한은 특정 데이터베이스에 대해 부여할 수 있으며, 또는 모든 데이터베이스에 적용되도록 전역(global)으로 부여할 수도 있습니다.
테이블, 인덱스, 뷰, 저장 루틴과 같은 데이터베이스 객체에 대한 권한은 데이터베이스 내의 특정 객체에 대해, 데이터베이스 내의 특정 유형의 모든 객체에 대해(예: 데이터베이스 내의 모든 테이블), 또는 모든 데이터베이스의 특정 유형의 모든 객체에 대해 전역(global)으로 부여할 수 있습니다.
권한은 또한 정적(static, 서버에 내장됨)인지 동적(dynamic, 런타임에 정의됨)인지 여부에 따라서도 다릅니다. 권한이 정적인지 동적인지 여부는 사용자 계정 및 역할(role)에 부여될 수 있는 가용성에 영향을 미칩니다. 정적 권한과 동적 권한의 차이에 대한 정보는 Static Versus Dynamic Privileges를 참조하십시오.)
계정 권한에 대한 정보는 mysql 시스템 데이터베이스의 권한 부여(grant) 테이블에 저장됩니다. 이 테이블의 구조 및 내용에 대한 설명은 Section 8.2.3, “Grant Tables”를 참조하십시오.
MySQL 서버는 시작 시 권한 부여 테이블의 내용을 메모리로 읽어들이며, Section 8.2.13, “When Privilege Changes Take Effect”에 표시된 상황에서 이를 다시 로드(reload)합니다. 서버는 권한 부여 테이블의 메모리 내 복사본에 기반하여 접근 제어 결정을 내립니다.
주의
일부 MySQL 릴리스에서는 새로운 권한 또는 기능을 추가하기 위해 권한 부여 테이블에 변경 사항을 도입합니다. 새로운 기능을 활용할 수 있도록, MySQL을 업그레이드할 때마다 권한 부여 테이블을 현재 구조로 업데이트하십시오. Chapter 3, Upgrading MySQL을 참조하십시오.
다음 섹션은 사용 가능한 권한을 요약하고, 각 권한에 대한 더 자세한 설명을 제공하며, 사용 가이드라인을 제공합니다.
다음 테이블은 GRANT 및 REVOKE 문에서 사용되는 정적 권한 이름(static privilege names)과 함께, 권한 부여 테이블에서 각 권한에 연관된 컬럼 이름 및 권한이 적용되는 컨텍스트를 보여 줍니다.
Table 8.2 GRANT 및 REVOKE에 허용되는 Static Privileges
| Privilege | Grant Table Column | Context |
|---|---|---|
ALL [PRIVILEGES] | “all privileges”의 synonym | Server administration |
ALTER | Alter_priv | Tables |
ALTER ROUTINE | Alter_routine_priv | Stored routines |
CREATE | Create_priv | Databases, tables, or indexes |
CREATE ROLE | Create_role_priv | Server administration |
CREATE ROUTINE | Create_routine_priv | Stored routines |
CREATE TABLESPACE | Create_tablespace_priv | Server administration |
CREATE TEMPORARY TABLES | Create_tmp_table_priv | Tables |
CREATE USER | Create_user_priv | Server administration |
CREATE VIEW | Create_view_priv | Views |
DELETE | Delete_priv | Tables |
DROP | Drop_priv | Databases, tables, or views |
DROP ROLE | Drop_role_priv | Server administration |
EVENT | Event_priv | Databases |
EXECUTE | Execute_priv | Stored routines |
FILE | File_priv | File access on server host |
GRANT OPTION | Grant_priv | Databases, tables, or stored routines |
INDEX | Index_priv | Tables |
INSERT | Insert_priv | Tables or columns |
LOCK TABLES | Lock_tables_priv | Databases |
PROCESS | Process_priv | Server administration |
PROXY | proxies_priv table 참조 | Server administration |
REFERENCES | References_priv | Databases or tables |
RELOAD | Reload_priv | Server administration |
REPLICATION CLIENT | Repl_client_priv | Server administration |
REPLICATION SLAVE | Repl_slave_priv | Server administration |
SELECT | Select_priv | Tables or columns |
SHOW DATABASES | Show_db_priv | Server administration |
SHOW VIEW | Show_view_priv | Views |
SHUTDOWN | Shutdown_priv | Server administration |
SUPER | Super_priv | Server administration |
TRIGGER | Trigger_priv | Tables |
UPDATE | Update_priv | Tables or columns |
USAGE | “no privileges”의 synonym | Server administration |
| Privilege | Grant Table Column | Context |
|---|
다음 테이블은 GRANT 및 REVOKE 문에서 사용되는 동적 권한 이름(dynamic privilege names)과 함께, 권한이 적용되는 컨텍스트를 보여 줍니다.
Table 8.3 GRANT 및 REVOKE에 허용되는 Dynamic Privileges
| Privilege | Context |
|---|---|
ALLOW_NONEXISTENT_DEFINER | Orphan object protection |
APPLICATION_PASSWORD_ADMIN | Dual password administration |
AUDIT_ABORT_EXEMPT | Allow queries blocked by audit log filter |
AUDIT_ADMIN | Audit log administration |
AUTHENTICATION_POLICY_ADMIN | Authentication administration |
BACKUP_ADMIN | Backup administration |
BINLOG_ADMIN | Backup and Replication administration |
BINLOG_ENCRYPTION_ADMIN | Backup and Replication administration |
CLONE_ADMIN | Clone administration |
CONNECTION_ADMIN | Server administration |
CREATE_SPATIAL_REFERENCE_SYSTEM | GIS administration |
ENCRYPTION_KEY_ADMIN | Server administration |
EXPORT_QUERY_RESULTS | Allow user to export query results |
FIREWALL_ADMIN | Firewall administration |
FIREWALL_EXEMPT | Firewall administration |
FIREWALL_USER | Firewall administration (deprecated) |
FLUSH_OPTIMIZER_COSTS | Server administration |
FLUSH_PRIVILEGES (Deprecated) | Server administration |
FLUSH_STATUS | Server administration |
FLUSH_TABLES | Server administration |
FLUSH_USER_RESOURCES | Server administration |
GROUP_REPLICATION_ADMIN | Replication administration |
GROUP_REPLICATION_STREAM | Replication administration |
INNODB_REDO_LOG_ARCHIVE | Redo log archiving administration |
INNODB_REDO_LOG_ENABLE | Redo log administration |
MASKING_DICTIONARIES_ADMIN | Server administration |
NDB_STORED_USER | NDB Cluster |
OPTIMIZE_LOCAL_TABLE | OPTIMIZE LOCAL<br> TABLE statements |
OPTION_TRACKER_OBSERVER | Option Tracker mysql_option.option_usage table read<br> access |
OPTION_TRACKER_UPDATER | Option Tracker mysql_option.option_usage table write<br> access |
PASSWORDLESS_USER_ADMIN | Authentication administration |
PERSIST_RO_VARIABLES_ADMIN | Server administration |
REPLICATION_APPLIER | PRIVILEGE_CHECKS_USER for a replication channel |
REPLICATION_SLAVE_ADMIN | Replication administration |
RESOURCE_GROUP_ADMIN | Resource group administration |
RESOURCE_GROUP_USER | Resource group administration |
ROLE_ADMIN | Server administration |
SENSITIVE_VARIABLES_OBSERVER | Server administration |
SESSION_VARIABLES_ADMIN | Server administration |
SET_ANY_DEFINER | Server administration |
SHOW_ROUTINE | Server administration |
SKIP_QUERY_REWRITE | Server administration |
SYSTEM_USER | Server administration |
SYSTEM_VARIABLES_ADMIN | Server administration |
TABLE_ENCRYPTION_ADMIN | Server administration |
TELEMETRY_LOG_ADMIN | Telemetry log administration for MySQL HeatWave on AWS |
TP_CONNECTION_ADMIN | Thread pool administration |
TRANSACTION_GTID_TAG | Replication administration |
VERSION_TOKEN_ADMIN (Deprecated) | Server administration |
XA_RECOVER_ADMIN | Server administration |
| Privilege | Context |
|---|
정적 권한은 동적 권한과 달리 서버에 내장되어 있으며, 동적 권한은 런타임에 정의됩니다. 다음 목록은 MySQL에서 사용 가능한 각 정적 권한을 설명합니다.
특정 SQL 문은 여기에서 표시된 것보다 더 구체적인 권한 요구 사항을 가질 수 있습니다. 그런 경우 해당 문의 설명에 세부 사항이 제공됩니다.
이러한 권한 지정자는 “특정 권한 수준에서 사용 가능한 모든 권한”에 대한 축약(shorthand)입니다(단, GRANT OPTION은 제외). 예를 들어, 전역 수준 또는 테이블 수준에서 ALL을 부여하면 각각 모든 전역 권한 또는 모든 테이블 수준 권한이 부여됩니다.
테이블의 구조를 변경하기 위해 ALTER<br> TABLE 문을 사용할 수 있도록 합니다. ALTER TABLE은 또한 CREATE 및 INSERT 권한을 요구합니다. 테이블 이름 변경에는 기존 테이블에 대한 ALTER 및 DROP, 새 테이블에 대한 CREATE 및 INSERT가 필요합니다.
저장 루틴(저장 프로시저 및 함수)을 변경(alter)하거나 삭제(drop)하는 문을 사용할 수 있도록 합니다. 권한이 부여된 범위(scope)에 속하고, 사용자가 루틴 DEFINER로 지정된 사용자가 아닌 루틴에 대해, 루틴 정의 외의 루틴 속성에 대한 접근도 가능하게 합니다.
새 데이터베이스 및 테이블을 생성하는 문을 사용할 수 있도록 합니다.
CREATE<br> ROLE 문을 사용할 수 있도록 합니다. (CREATE<br> USER 권한 또한 CREATE ROLE 문 사용을 가능하게 합니다.) Section 8.2.10, “Using Roles”를 참조하십시오.
CREATE ROLE 및 DROP ROLE 권한은 CREATE USER만큼 강력하지 않습니다. 계정 생성 및 삭제 용도로만 사용할 수 있기 때문입니다. CREATE<br> USER가 할 수 있는 것처럼 계정 속성을 수정(modify)하거나 계정 이름을 변경(rename)하는 데 사용할 수 없습니다. User and Role Interchangeability를 참조하십시오.
저장 루틴(저장 프로시저 및 함수)을 생성하는 문을 사용할 수 있도록 합니다. 권한이 부여된 범위(scope)에 속하고, 사용자가 루틴 DEFINER로 지정된 사용자가 아닌 루틴에 대해, 루틴 정의 외의 루틴 속성에 대한 접근도 가능하게 합니다.
테이블스페이스 및 로그 파일 그룹을 생성(create), 변경(alter), 또는 삭제(drop)하는 문을 사용할 수 있도록 합니다.
CREATE TEMPORARY TABLE 문을 사용하여 임시 테이블을 생성할 수 있도록 합니다.
세션이 임시 테이블을 생성한 후에는, 서버는 해당 테이블에 대해 추가 권한 검사를 수행하지 않습니다. 생성한 세션은 DROP TABLE, INSERT, UPDATE, 또는 SELECT 등 해당 테이블에 대해 어떤 작업(operation)도 수행할 수 있습니다. 자세한 내용은 Section 15.1.24.2, “CREATE TEMPORARY TABLE Statement”를 참조하십시오.
ALTER<br> USER, CREATE ROLE, CREATE USER, DROP ROLE, DROP USER, RENAME USER, 그리고 REVOKE ALL<br> PRIVILEGES 문을 사용할 수 있도록 합니다.
CREATE<br> VIEW 문을 사용할 수 있도록 합니다.
데이터베이스의 테이블에서 행(row)을 삭제할 수 있도록 합니다.
기존 데이터베이스, 테이블 및 뷰를 삭제(drop, 제거)하는 문을 사용할 수 있도록 합니다. 파티션 테이블에서 ALTER TABLE ... DROP PARTITION 문을 사용하려면 DROP 권한이 필요합니다. TRUNCATE TABLE에도 DROP 권한이 필요합니다.
DROP ROLE 문을 사용할 수 있도록 합니다. (CREATE USER 권한 또한 DROP<br> ROLE 문 사용을 가능하게 합니다.) Section 8.2.10, “Using Roles”를 참조하십시오.
CREATE ROLE 및 DROP ROLE 권한은 CREATE USER만큼 강력하지 않습니다. 계정 생성 및 삭제 용도로만 사용할 수 있기 때문입니다. CREATE<br> USER가 할 수 있는 것처럼 계정 속성을 수정(modify)하거나 계정 이름을 변경(rename)하는 데 사용할 수 없습니다. User and Role Interchangeability를 참조하십시오.
Event Scheduler를 위한 이벤트를 생성(create), 변경(alter), 삭제(drop) 또는 표시(display)하는 문을 사용할 수 있도록 합니다.
저장 루틴(저장 프로시저 및 함수)을 실행(execute)하는 문을 사용할 수 있도록 합니다. 권한이 부여된 범위(scope)에 속하고, 사용자가 루틴 DEFINER로 지정된 사용자가 아닌 루틴에 대해, 루틴 정의 외의 루틴 속성에 대한 접근도 가능하게 합니다.
다음 작업(operation) 및 서버 동작(behavior)에 영향을 미칩니다:
LOAD DATA 및 SELECT ...<br> INTO OUTFILE 문과 LOAD_FILE() 함수를 사용하여 서버 호스트에서 파일을 읽고 쓸 수 있도록 합니다. FILE 권한이 있는 사용자는 서버 호스트에서 world-readable이거나 MySQL 서버가 읽을 수 있는 모든 파일을 읽을 수 있습니다. (이는 사용자가 어떤 데이터베이스 디렉터리의 어떤 파일이든 읽을 수 있음을 의미합니다. 서버는 해당 파일 중 어떤 것에도 접근할 수 있기 때문입니다.)
MySQL 서버에 쓰기 권한(write access)이 있는 어떤 디렉터리에도 새 파일을 생성할 수 있도록 합니다. 여기에는 권한 테이블을 구현하는 파일이 들어 있는 서버의 데이터 디렉터리가 포함됩니다.
CREATE TABLE 문의 DATA DIRECTORY 또는 INDEX DIRECTORY 테이블 옵션을 사용할 수 있도록 합니다.
보안 조치로서 서버는 기존 파일을 덮어쓰지(overwrite) 않습니다.
파일을 읽고 쓸 수 있는 위치를 제한하려면 secure_file_priv 시스템 변수를 특정 디렉터리로 설정하십시오. Section 7.1.8, “Server System Variables”를 참조하십시오.
자신이 보유한 권한을 다른 사용자에게 부여(grant)하거나 다른 사용자로부터 회수(revoke)할 수 있도록 합니다.
인덱스를 생성(create) 또는 삭제(drop, 제거)하는 문을 사용할 수 있도록 합니다. INDEX는 기존 테이블에 적용됩니다. 테이블에 대해 CREATE 권한이 있으면, CREATE TABLE 문에 인덱스 정의를 포함할 수 있습니다.
데이터베이스의 테이블에 행(row)을 삽입(insert)할 수 있도록 합니다. ANALYZE TABLE, OPTIMIZE TABLE, 및 REPAIR TABLE과 같은 테이블 유지보수 문에도 INSERT가 필요합니다.
SELECT 권한이 있는 테이블에 대해 명시적 LOCK<br> TABLES 문을 사용하여 테이블을 잠글(lock) 수 있도록 합니다. 이는 다른 세션이 잠긴 테이블을 읽지 못하게 하는 쓰기 잠금(write lock) 사용을 포함합니다.
PROCESS 권한은 서버 내에서 실행 중인 스레드에 대한 정보(즉, 세션에 의해 실행되는 문에 대한 정보)에 대한 접근을 제어합니다. SHOW PROCESSLIST 문, mysqladmin processlist 명령, Information Schema PROCESSLIST 테이블, 및 Performance Schema processlist 테이블을 사용하여 제공되는 스레드 정보는 다음과 같이 접근 가능합니다:
PROCESS 권한이 있으면, 사용자는 다른 사용자의 스레드를 포함하여 모든 스레드 정보에 접근할 수 있습니다.PROCESS 권한이 없으면, 익명(anonymous)이 아닌 사용자는 자신의 스레드 정보에는 접근할 수 있으나 다른 사용자의 스레드에는 접근할 수 없고, 익명 사용자는 스레드 정보에 접근할 수 없습니다.Note
Performance Schema threads 테이블도 스레드 정보를 제공하지만, 테이블 접근은 다른 권한 모델을 사용합니다. Section 29.12.22.10, “The threads Table”을 참조하십시오.
PROCESS 권한은 또한 SHOW<br> ENGINE 문의 사용, INFORMATION_SCHEMA``InnoDB 테이블(이름이 INNODB_로 시작하는 테이블)에 대한 접근, 및 INFORMATION_SCHEMA FILES 테이블에 대한 접근을 가능하게 합니다.
한 사용자가 다른 사용자를 가장(impersonate)하거나 그 사용자로 알려질 수 있도록 합니다. Section 8.2.19, “Proxy Users”를 참조하십시오.
외래 키 제약 조건을 생성하려면 부모(parent) 테이블에 대한 REFERENCES 권한이 필요합니다.
RELOAD는 다음 작업을 가능하게 합니다:
FLUSH 문의 사용.
FLUSH 작업과 동등한 mysqladmin 명령의 사용: flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, refresh, 및 reload.
reload 명령은 서버에게 권한 부여 테이블을 메모리로 다시 로드하라고 지시합니다. flush-privileges는 reload의 동의어(synonym)입니다. refresh 명령은 로그 파일을 닫았다가 다시 열고 모든 테이블을 flush합니다. 다른 flush-xxx 명령은 refresh와 유사한 기능을 수행하지만 더 구체적이며, 일부 경우 더 선호될 수 있습니다. 예를 들어, 로그 파일만 flush하려면 refresh보다 flush-logs가 더 좋은 선택입니다.
다양한 FLUSH 작업을 수행하는 mysqldump 옵션의 사용: --flush-logs 및 --source-data.
SHOW BINARY LOG<br> STATUS, SHOW REPLICA<br> STATUS, 및 SHOW BINARY<br> LOGS 문을 사용할 수 있도록 합니다.
계정이 복제 소스(replication source) 서버에서 데이터베이스에 적용된 업데이트를 요청할 수 있도록 하며, 이는 SHOW<br> REPLICAS, SHOW RELAYLOG<br> EVENTS, 및 SHOW BINLOG<br> EVENTS 문을 사용합니다. 또한 이 권한은 mysqlbinlog 옵션 --read-from-remote-server (-R) 및 --read-from-remote-source를 사용하기 위해서도 필요합니다. 이 권한은 복제본(replica)이 복제 소스 서버로서 현재 서버에 연결하는 데 사용하는 계정에 부여하십시오.
데이터베이스의 테이블에서 행(row)을 조회(select)할 수 있도록 합니다. SELECT 문은 실제로 테이블에 접근하는 경우에만 SELECT 권한이 필요합니다. 일부 SELECT 문은 테이블에 접근하지 않으며 어떤 데이터베이스에 대해서도 권한 없이 실행할 수 있습니다.
예를 들어, 테이블을 참조하지 않는 표현식을 평가하기 위해 SELECT를 간단한 계산기처럼 사용할 수 있습니다:
1SELECT 1+1; 2SELECT PI()*2;
SELECT 권한은 컬럼 값을 읽는 다른 문에도 필요합니다. 예를 들어, UPDATE 문에서 col_name = expr 대입의 우변(right hand side)에 참조되는 컬럼 또는 DELETE 또는 UPDATE 문의 WHERE 절(clause)에 지정된 컬럼에 대해서는 SELECT가 필요합니다.
SELECT 권한은 EXPLAIN과 함께 사용되는 테이블 또는 뷰(뷰 정의에 포함된 기반 테이블 포함)에도 필요합니다.
계정이 SHOW DATABASE 문을 실행하여 데이터베이스 이름을 볼 수 있도록 합니다. 이 권한이 없는 계정은 어떤 권한을 가진 데이터베이스만 볼 수 있으며, 서버가 --skip-show-database 옵션으로 시작된 경우에는 문을 전혀 사용할 수 없습니다.
Caution
어떤 정적 전역 권한(static global privilege)이라도 모든 데이터베이스에 대한 권한으로 간주되므로, 어떤 정적 전역 권한이라도 사용자가 SHOW DATABASES를 사용하거나 INFORMATION_SCHEMA의 SCHEMATA 테이블을 검사하여(단, partial revokes에 의해 데이터베이스 수준에서 제한된 데이터베이스는 제외) 모든 데이터베이스 이름을 볼 수 있도록 합니다.
SHOW CREATE<br> VIEW 문을 사용할 수 있도록 합니다. 이 권한은 EXPLAIN과 함께 사용되는 뷰에도 필요합니다.
SHUTDOWN 및 RESTART 문, mysqladmin shutdown 명령, 그리고 mysql_shutdown() C API 함수를 사용할 수 있도록 합니다.
SUPER는 강력하고 광범위한 권한이며, 쉽게 부여해서는 안 됩니다. 계정이 SUPER 작업(operation)의 일부 부분집합만 수행해야 하는 경우, 각 권한이 더 제한된 기능을 부여하는 하나 이상의 동적 권한을 대신 부여하여 원하는 권한 집합을 달성할 수 있을 가능성이 있습니다. Dynamic Privilege Descriptions를 참조하십시오.
Note
SUPER는 deprecated이며, 향후 MySQL 버전에서 제거될 것으로 예상해야 합니다. Migrating Accounts from SUPER to Dynamic Privileges를 참조하십시오.
SUPER는 다음 작업 및 서버 동작에 영향을 미칩니다:
런타임에서 시스템 변수 변경을 가능하게 합니다:
SET<br> GLOBAL 및 SET<br> PERSIST로 전역 시스템 변수에 대한 서버 구성 변경을 가능하게 합니다.
이에 대응하는 동적 권한은 SYSTEM_VARIABLES_ADMIN입니다.
특별 권한이 필요한 제한된 세션 시스템 변수를 설정할 수 있도록 합니다.
이에 대응하는 동적 권한은 SESSION_VARIABLES_ADMIN입니다.
또한 Section 7.1.9.1, “System Variable Privileges”를 참조하십시오.
전역 트랜잭션 특성 변경을 가능하게 합니다(Section 15.3.7, “SET TRANSACTION Statement” 참조).
이에 대응하는 동적 권한은 SYSTEM_VARIABLES_ADMIN입니다.
계정이 Group Replication을 포함한 복제를 시작(start) 및 중지(stop)할 수 있도록 합니다.
이에 대응하는 동적 권한은 일반 복제의 경우 REPLICATION_SLAVE_ADMIN, Group Replication의 경우 GROUP_REPLICATION_ADMIN입니다.
CHANGE REPLICATION<br> SOURCE TO 및 CHANGE<br> REPLICATION FILTER 문을 사용할 수 있도록 합니다.
이에 대응하는 동적 권한은 REPLICATION_SLAVE_ADMIN입니다.
PURGE BINARY LOGS 및 BINLOG 문을 통해 바이너리 로그 제어를 가능하게 합니다.
이에 대응하는 동적 권한은 BINLOG_ADMIN입니다.
뷰 또는 저장 프로그램을 실행할 때 유효 권한 ID(effective authorization ID)를 설정할 수 있도록 합니다. 이 권한을 가진 사용자는 뷰 또는 저장 프로그램의 DEFINER 속성(attribute)에 어떤 계정(any account)도 지정할 수 있습니다.
이에 대응하는 동적 권한은 SET_ANY_DEFINER 및 ALLOW_NONEXISTENT_DEFINER입니다.
CREATE<br> SERVER, ALTER<br> SERVER, 및 DROP<br> SERVER 문을 사용할 수 있도록 합니다.
mysqladmin debug 명령을 사용할 수 있도록 합니다.
InnoDB 암호화 키 로테이션(rotation)을 가능하게 합니다.
이에 대응하는 동적 권한은 ENCRYPTION_KEY_ADMIN입니다.
Deprecated Version Tokens 함수의 실행을 가능하게 합니다.
이에 대응하는 동적 권한은 deprecated인 VERSION_TOKEN_ADMIN입니다.
역할(role)을 부여(grant) 및 회수(revoke)하는 것, GRANT 문의 WITH ADMIN OPTION 절(clause) 사용, 그리고 ROLES_GRAPHML() 함수 결과에서 비어 있지 않은 <graphml> 요소(element) 내용을 가능하게 합니다.
이에 대응하는 동적 권한은 ROLE_ADMIN입니다.
비- SUPER 계정에는 허용되지 않는 클라이언트 연결 제어를 가능하게 합니다:
KILL 문 또는 mysqladmin kill 명령을 사용하여 다른 계정에 속한 스레드를 종료(kill)할 수 있도록 합니다. (계정은 항상 자신의 스레드는 종료할 수 있습니다.)SUPER 클라이언트가 연결(connect)할 때 서버는 init_connect 시스템 변수 내용을 실행하지 않습니다.max_connections 시스템 변수로 구성된 연결 제한에 도달했더라도 서버는 SUPER 클라이언트로부터 1개의 연결(one connection)을 수락(accept)합니다.offline_mode enabled)에서 서버는 다음 클라이언트 요청에서 SUPER 클라이언트 연결을 종료(terminate)하지 않으며, SUPER 클라이언트의 새 연결(new connections)을 수락합니다.read_only 시스템 변수가 enabled되어 있어도 업데이트를 수행할 수 있습니다. 이는 명시적 테이블 업데이트 및 테이블을 암묵적으로 업데이트하는 GRANT 및 REVOKE와 같은 계정 관리 문 사용에 적용됩니다.앞선 연결 제어 작업에 대응하는 동적 권한은 CONNECTION_ADMIN입니다.
또한 바이너리 로깅(binary logging)이 enabled되어 있는 경우, Section 27.9, “Stored Program Binary Logging”에 설명된 대로 저장 함수를 생성(create) 또는 변경(alter)하려면 SUPER 권한이 필요할 수 있습니다.
트리거 작업을 가능하게 합니다. 테이블에 대해 트리거를 생성(create), 삭제(drop), 실행(execute) 또는 표시(display)하려면 해당 테이블에 대해 이 권한이 있어야 합니다.
트리거가 활성화되면(트리거와 연관된 테이블에 대해 INSERT, UPDATE, 또는 DELETE 문을 실행할 권한이 있는 사용자에 의해), 트리거 실행은 트리거를 정의한 사용자가 여전히 해당 테이블에 대한 TRIGGER 권한을 가지고 있을 것을 요구합니다.
데이터베이스의 테이블에서 행(row)을 업데이트(update)할 수 있도록 합니다.
이 권한 지정자는 “권한 없음(no privileges)”을 의미합니다. 전역 수준에서 GRANT와 함께 사용되어, 권한 목록에서 특정 계정 권한을 지정하지 않고 WITH GRANT OPTION과 같은 절을 지정하는 데 사용됩니다. SHOW GRANTS는 계정이 해당 권한 수준에서 권한이 없음을 나타내기 위해 USAGE를 표시합니다.
동적 권한은 정적 권한(서버에 내장됨)과 달리 런타임에 정의됩니다. 다음 목록은 MySQL에서 사용 가능한 각 동적 권한을 설명합니다.
대부분의 동적 권한은 서버 시작 시 정의됩니다. 다른 것들은 특정 컴포넌트(component) 또는 플러그인(plugin)에 의해 정의되며, 권한 설명에 표시됩니다. 이러한 경우, 권한은 이를 정의하는 컴포넌트 또는 플러그인이 enabled되어 있지 않으면 사용할 수 없습니다.
특정 SQL 문은 여기에서 표시된 것보다 더 구체적인 권한 요구 사항을 가질 수 있습니다. 그런 경우 해당 문의 설명에 세부 사항이 제공됩니다.
1INSTALL COMPONENT 'my_component'; 2UNINSTALL COMPONENT 'my_component'; 3INSTALL COMPONENT 'my_component';
1GRANT REPLICATION_SLAVE_ADMIN, GROUP_REPLICATION_ADMIN, BINLOG_ADMIN 2ON *.* TO 'u1'@'localhost';
다음 쿼리를 실행하여 SUPER가 부여된 계정을 식별합니다:
1SELECT GRANTEE FROM INFORMATION_SCHEMA.USER_PRIVILEGES 2WHERE PRIVILEGE_TYPE = 'SUPER';
앞선 쿼리로 식별된 각 계정에 대해, 해당 계정이 필요로 하는 SUPER 작업을 결정합니다. 그런 다음 해당 작업에 대응하는 동적 권한을 부여(grant)하고, SUPER를 회수(revoke)합니다.
예를 들어, 'u1'@'localhost'가 바이너리 로그 정리(purging) 및 시스템 변수 수정(modification)을 위해 SUPER가 필요한 경우, 다음 문은 계정에 필요한 변경을 적용합니다:
1GRANT BINLOG_ADMIN, SYSTEM_VARIABLES_ADMIN ON *.* TO 'u1'@'localhost'; 2REVOKE SUPER ON *.* FROM 'u1'@'localhost';
적용 가능한 모든 계정을 수정한 후, 1단계의 INFORMATION_SCHEMA 쿼리는 비어 있는 결과 집합(empty result set)을 생성해야 합니다.
8.2.1 Account User Names and Passwords
8.2.3 Grant Tables