MySQL 사용자 정보

이 페이지에서는 MySQL 사용자에 대한 Cloud SQL의 작동 방식을 설명합니다. MySQL 사용자 계정은 MySQL 데이터베이스 액세스를 제어하여 보안을 제공합니다.

MySQL 사용자에 관한 전체 문서는 MySQL 문서를 참조하세요. 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, usertables_priv.

MySQL 8.0에 대한 관련 정보는 MySQL 8.0 사용자 권한(cloudsqlsuperuser)을 참조하세요.

MySQL 사용자 계정 형식

MySQL 사용자 계정은 사용자 이름 및 호스트 이름으로 구성됩니다. 사용자 이름은 사용자를 식별하며 호스트 이름은 사용자의 연결 호스트를 지정합니다. 사용자 이름과 호스트 이름이 결합하여 사용자 계정을 구성합니다.

'<user_name>'@'<host_name>'

호스트 이름에 특정 IP 주소 또는 주소 범위를 지정하거나 퍼센트 문자('%')를 사용하여 호스트 이름을 제한이 없는 상태로 유지할 수 있습니다. IP 주소로 인스턴스에 연결하는 경우 사용자의 호스트 이름에 제한이 없는 상태이더라도 클라이언트 IP 주소를 인증된 주소로 추가해야 합니다.

사용자 계정은 사용자 이름과 호스트 이름 둘 다에 의해 정의됩니다. 예를 들어 'user'@'%''user'@'localhost'와 다른 사용자 계정입니다.

기본 MySQL 사용자

생성 시 MySQL 인스턴스에는 하나의 기본 사용자 계정('root'@'%')이 있습니다. 이 계정을 사용하여 데이터베이스 인스턴스에 처음으로 연결하고 관리합니다. 기본 사용자에게는 SUPERFILE을 제외한 모든 데이터베이스 권한이 있습니다. Cloud SQL에서 'root'@'%'의 이름은 변경할 수 없습니다.

root'@'%의 기본값이 비밀번호가 아니고 MySQL에서 root'@'%에 비밀번호를 사용할 필요가 없습니다. 하지만 root'@'%가 대부분 MySQL 설치 시 생성되므로 root'@'% 사용자가 무단 액세스의 표적이 되기 쉽습니다. 인스턴스에 대한 액세스 권한이 있는 사람 또는 프로그램은 사실상 인스턴스 및 데이터에 무제한으로 액세스할 수 있습니다. 따라서 안전한 비밀번호로 root'@'% 사용자를 구성하거나 이 사용자를 삭제하는 것이 좋습니다. 기본 사용자 계정 구성하에 관한 도움말은 기본 사용자 계정 구성을 참조하세요.

시스템 사용자

시스템 사용자는 7명입니다.

  • root@localhost, root@127.0.0.1, root@::1

    관리형 데이터베이스 서비스를 제공하는 데 사용됩니다.

  • cloudsqlreplica@%

    복제본의 복제 사용자로 사용됩니다.

  • cloudsqlimport@localhost

    데이터 가져오기에 사용됩니다.

  • cloudsqlexport@localhost

    데이터 내보내기에 사용됩니다.

  • cloudsqloneshot

    다른 데이터베이스 작업에 사용됩니다.

  • cloudsqlapplier@localhost

    외부 서버 복제본 또는 주 버전 간 복제에서 복제 작업에 사용됩니다.

  • cloudsqlobservabilityadmin

    데이터베이스 관측 가능성에 사용됩니다.

위 사용자는 삭제하거나 수정할 수 없습니다.

다른 MySQL 사용자 계정

MySQL 사용자 계정을 다른 목적으로 사용하려면 다른 MySQL 사용자 계정을 만드는 것이 좋습니다.

제한된 호스트 이름으로 사용자 계정을 만들거나 SQL 명령어를 사용하여 사용자 계정에 대한 권한을 제한할 수 있습니다.

사용자 계정 이름에 관한 자세한 내용은 MySQL 문서를 참조하세요. 새 MySQL 사용자를 만들려면 사용자 만들기를 참조하세요.

MySQL 5.6 및 5.7 사용자 권한

MySQL은 사용자에게 부여하거나 제거할 수 있는 세분화된 권한을 제공합니다. 이를 통해 인스턴스에서 사용자의 작업을 제어할 수 있습니다.

Cloud SQL로 생성된 사용자에게는 기본 MySQL 사용자와 동일한 권한이 부여됩니다. GRANT 또는 REVOKE 문을 사용하여 이러한 사용자 권한을 변경할 수 있습니다.

mysql 클라이언트를 사용하여 사용자를 만들 때는 GRANT 문을 사용하여 사용자에게 권한을 명시적으로 부여해야 합니다.

MySQL에서 지원하는 권한에 대한 자세한 내용은 MySQL에서 제공하는 권한을 참조하세요.

MySQL 8.0 사용자 권한(cloudsqlsuperuser)

Cloud SQL용 MySQL 8.0에서 새 사용자를 만들면 사용자에게 cloudsqlsuperuser 역할이 자동으로 부여됩니다. cloudsqlsuperuser 역할은 여러 MySQL 권한이 포함된 Cloud SQL 역할입니다. 이 역할은 SUPERFILE을 제외한 모든 MySQL 정적 권한을 사용자에게 부여합니다.

cloudsqlsuperuser 역할은 MySQL 8.0 부 버전을 기반으로 하는 다음 동적 권한만 지원합니다.

MySQL 8.0.18

MySQL 8.0.26

MySQL 8.0.27

MySQL 8.0.28

MySQL 8.0.29(지원 중단됨)

MySQL 8.0.30 이상

cloudsqlsuperuser 역할은 mysql 시스템 데이터베이스에서 데이터 정의 언어(DDL) 작업을 지원하지 않습니다.

cloudsqlsuperuser 역할에 부여된 권한의 전체 목록을 보려면 mysql 클라이언트에서 SHOW GRANTS 문을 실행합니다.

SHOW GRANTS FOR 'cloudsqlsuperuser'

다음 단계