이 페이지에서는 MySQL 사용자에 대한 Cloud SQL의 작동 방식을 설명합니다. MySQL 사용자 계정은 MySQL 데이터베이스 액세스를 제어하여 보안을 제공합니다.
MySQL의 사용자에 대한 전체 문서는 MySQL 문서의 액세스 제어 및 계정 관리를 참조하세요. Cloud SQL에서 Cloud SQL 사용자를 만들고 관리하는 방법에 대한 자세한 내용은 사용자 만들기 및 관리를 참조하세요.
MySQL 사용자 계정이 필요한 이유
MySQL 사용자 계정을 통해 Cloud SQL 인스턴스에 로그인하여 이를 관리할 수 있습니다. 애플리케이션에서 인스턴스에 액세스할 때도 사용자 계정이 필요합니다.
수퍼유저 제한사항
Cloud SQL에서 고객은 수퍼유저 속성이 있는 사용자를 만들거나 이 사용자로 액세스할 수 없습니다.
MySQL용 Cloud SQL은 관리형 서비스이므로 특정 시스템 프로시져 및 테이블에 대한 액세스를 제한합니다.
일부 스키마 테이블에서는 DML(Data Manipulation Language) 및 데이터 정의 언어 (DDL) 권한이 제한됩니다.
쓰기 권한이 필요한 mysql 스키마의 MySQL 5.6 시스템 테이블 목록은 다음과 같습니다.
audit_log_rules_expanded
, audit_log_supported_ops
, audit_log_rules
,
cloudsql_replica_index
, db
, event
, func
, heartbeat
, plugin
, proc
, user
, tables_priv
.
MySQL 5.7 목록은 다음과 같습니다.
audit_log_rules_expanded
, audit_log_supported_ops
, audit_log_rules
,
cloudsql_replica_index
, db
, event
, func
, gtid_executed
,
heartbeat
, plugin
, proc
, user
및 tables_priv
.
MySQL 8.0 및 MySQL 8.4에 대한 관련 정보는 MySQL 8.0 사용자 권한(cloudsqlsuperuser) 및 MySQL 8.4 사용자 권한(cloudsqlsuperuser)을 참조하세요.
MySQL 사용자 계정 형식
MySQL 사용자 계정에는 사용자 이름 및 호스트 이름 등 두 가지 구성요소가 있습니다. 사용자 이름은 사용자를 식별하며 호스트 이름은 사용자가 연결할 수 있는 호스트를 지정합니다. 사용자 이름과 호스트 이름을 결합하여 사용자 계정을 만듭니다.
'<user_name>'@'<host_name>'
호스트 이름에 특정 IP 주소나 IP 주소 범위를 지정하거나 퍼센트 문자('%')를 사용하여 호스트 이름을 제한이 없는 상태로 유지할 수 있습니다. IP 주소를 사용하여 인스턴스에 연결하는 경우 사용자 호스트 이름에 제한이 없는 상태이더라도 클라이언트 IP 주소를 인증된 주소로 추가해야 합니다.
사용자 계정은 사용자 이름과 호스트 이름 둘 다에 의해 정의됩니다. 예를 들어 'user'@'%'
는 'user'@'localhost'
와 다른 사용자 계정입니다.
기본 MySQL 사용자
생성 시 MySQL 인스턴스에는 하나의 기본 사용자 계정('root'@'%'
)이 있습니다. 이 계정을 사용하여 데이터베이스 인스턴스에 처음으로 연결하고 관리합니다. 기본 사용자에게는 SUPER 및 FILE을 제외한 모든 데이터베이스 권한이 있습니다. Cloud SQL에서 'root'@'%'
의 이름은 변경할 수 없습니다.
root'@'%
의 기본값이 비밀번호가 아니고 MySQL에서 root'@'%
에 비밀번호를 사용할 필요가 없습니다. 하지만 root'@'%
가 대부분 MySQL 설치 시 생성되므로 root'@'%
사용자가 무단 액세스의 표적이 되기 쉽습니다.
인스턴스에 대한 액세스 권한이 있는 사람 또는 프로그램은 사실상 인스턴스 및 데이터에 무제한으로 액세스할 수 있습니다. 따라서 안전한 비밀번호로 root'@'%
사용자를 구성하거나 이 사용자를 삭제하는 것이 좋습니다. 기본 사용자 계정 구성하에 관한 도움말은 기본 사용자 계정 구성을 참조하세요.
시스템 사용자
시스템 사용자는 7명입니다.
root@localhost
,root@127.0.0.1
,root@::1
관리형 데이터베이스 서비스를 제공하는 데 사용됩니다.
cloudsqlreplica@%
복제본의 복제 사용자로 사용됩니다.
cloudsqlimport@localhost
,cloudsqlimport@127.0.0.1
데이터 가져오기에 사용됩니다.
cloudsqlexport@localhost
,cloudsqlexport@127.0.0.1
데이터 내보내기에 사용됩니다.
cloudsqloneshot
다른 데이터베이스 작업에 사용됩니다.
cloudsqlapplier@localhost
외부 서버 복제본 또는 주 버전 간 복제에서 복제 작업에 사용됩니다.
cloudsqlobservabilityadmin
데이터베이스 관측 가능성에 사용됩니다.
cloudiamgroup@'%'
IAM 그룹 인증에 사용됩니다.
위 사용자는 삭제하거나 수정할 수 없습니다.
다른 MySQL 사용자 계정
MySQL 사용자 계정을 다른 목적으로 사용하려면 다른 MySQL 사용자 계정을 만드는 것이 좋습니다.
제한된 호스트 이름으로 사용자 계정을 만들거나 SQL 명령어를 사용하여 사용자 계정에 대한 권한을 제한할 수 있습니다.
사용자 계정 이름에 대한 자세한 내용은 MySQL 문서의 계정 이름 지정을 참조하세요. Cloud SQL에서 새 MySQL 사용자를 만들려면 사용자 만들기를 참조하세요.
MySQL 5.6 및 5.7 사용자 권한
MySQL은 사용자에게 부여하거나 제거할 수 있는 세분화된 권한을 제공합니다. 이를 통해 인스턴스에서 사용자가 수행할 수 있는 작업을 제어할 수 있습니다.
Cloud SQL로 생성된 사용자에게는 기본 MySQL 사용자와 동일한 권한이 부여됩니다. GRANT
또는 REVOKE
문을 사용하여 이러한 사용자 권한을 변경할 수 있습니다.
mysql
클라이언트를 사용하여 사용자를 만들 때는 GRANT
문을 사용하여 사용자에게 권한을 명시적으로 부여해야 합니다.
MySQL에서 지원하는 권한에 대한 자세한 내용은 MySQL에서 제공하는 권한을 참조하세요.
MySQL 8.0 사용자 권한(cloudsqlsuperuser
)
MySQL용 Cloud SQL 8.0에서 새 사용자를 만들면 사용자에게 cloudsqlsuperuser
역할이 자동으로 부여됩니다. cloudsqlsuperuser
역할은 여러 MySQL 권한이 포함된 Cloud SQL 역할입니다. 이 역할은 SUPER
및 FILE
을 제외한 모든 MySQL 정적 권한을 사용자에게 부여합니다.
cloudsqlsuperuser
역할은 MySQL 8.0 부 버전을 기반으로 하는 다음 동적 권한만 지원합니다.
MySQL 8.0.18
MySQL 8.0.26
MySQL 8.0.27
MySQL 8.0.28
APPLICATION_PASSWORD_ADMIN
CONNECTION_ADMIN
ROLE_ADMIN
SET_USER_ID
XA_RECOVER_ADMIN
CLOUDSQL_SPECIAL_VARIABLES_ADMIN
FLUSH_OPTIMIZER_COSTS
FLUSH_STATUS
FLUSH_TABLES
FLUSH_USER_RESOURCES
INNODB_REDO_LOG_ENABLE
SHOW_ROUTINE
AUTHENTICATION_POLICY_ADMIN
GROUP_REPLICATION_STREAM
PASSWORDLESS_USER_ADMIN
AUDIT_ABORT_EXEMPT
MySQL 8.0.29(지원 중단됨)
APPLICATION_PASSWORD_ADMIN
CONNECTION_ADMIN
ROLE_ADMIN
SET_USER_ID
XA_RECOVER_ADMIN
CLOUDSQL_SPECIAL_VARIABLES_ADMIN
FLUSH_OPTIMIZER_COSTS
FLUSH_STATUS
FLUSH_TABLES
FLUSH_USER_RESOURCES
INNODB_REDO_LOG_ENABLE
SHOW_ROUTINE
AUTHENTICATION_POLICY_ADMIN
GROUP_REPLICATION_STREAM
PASSWORDLESS_USER_ADMIN
AUDIT_ABORT_EXEMPT
SENSITIVE_VARIABLES_OBSERVER
MySQL 8.0.30 이상
APPLICATION_PASSWORD_ADMIN
CONNECTION_ADMIN
ROLE_ADMIN
SET_USER_ID
XA_RECOVER_ADMIN
CLOUDSQL_SPECIAL_VARIABLES_ADMIN
FLUSH_OPTIMIZER_COSTS
FLUSH_STATUS
FLUSH_TABLES
FLUSH_USER_RESOURCES
INNODB_REDO_LOG_ENABLE
SHOW_ROUTINE
AUTHENTICATION_POLICY_ADMIN
GROUP_REPLICATION_STREAM
PASSWORDLESS_USER_ADMIN
AUDIT_ABORT_EXEMPT
SENSITIVE_VARIABLES_OBSERVER
FIREWALL_EXEMPT
cloudsqlsuperuser
역할은 mysql
시스템 데이터베이스에서 데이터 정의 언어(DDL) 작업을 지원하지 않습니다.
cloudsqlsuperuser
역할에 부여된 권한의 전체 목록을 보려면 mysql
클라이언트에서 SHOW GRANTS
문을 실행합니다.
SHOW GRANTS FOR 'cloudsqlsuperuser'
MySQL 8.4 사용자 권한(cloudsqlsuperuser
)
MySQL용 Cloud SQL 8.0과 마찬가지로 MySQL용 Cloud SQL 8.4에서 새 사용자를 만들면 사용자에게 cloudsqlsuperuser
역할이 자동으로 부여됩니다.
MySQL 8.4에서 cloudsqlsuperuser
역할은 MySQL 8.0.x와 동일한 권한을 갖습니다.
하지만 MySQL 8.4에는 다음과 같은 MySQL 8.0.x와의 주요 차이점이 있습니다.
SET_USER_ID
권한을 삭제하고 새로 도입된ALLOW_NONEXISTENT_DEFINER
및SET_ANY_DEFINER
권한으로 대체합니다.RELOAD
권한의 하위 집합으로FLUSH_PRIVILEGES
를 부여합니다. 이 부여는RELOAD
권한을 대체하지 않으며RELOAD
권한은 이전 버전과의 호환성을 위해 계속 부여됩니다.- 새
OPTIMIZE_LOCAL_TABLE
권한을 부여합니다.
또한 MySQL용 Cloud SQL 8.4에서는 MySQL 8.4에서 도입된 TRANSACTION_GTID_TAG
또는 TELEMETRY_LOG_ADMIN
권한을 부여하지 않습니다.
다음 단계
- 인스턴스의
root
사용자 계정 구성 - 사용자 만들기 및 관리
- 데이터베이스 만들기 및 관리하기
- MySQL 사용자에 관한 MySQL 문서 알아보기
- MySQL에서 제공하는 권한에 대한 MySQL 문서 살펴보기
- 인스턴스 연결 옵션 알아보기