MySQL 사용자 만들기 및 관리

이 페이지에서는 Cloud SQL 인스턴스에 다음 작업을 수행하는 방법을 설명합니다.

  • 기본 사용자 계정을 구성합니다.
  • 다른 사용자 계정을 생성, 삭제, 업데이트합니다.

Cloud SQL에서 사용자 계정이 작동하는 방식에 대한 자세한 내용은 MySQL 사용자를 참조하세요.

시작하기 전에

아래 작업을 수행하기 전에 먼저 Cloud SQL 인스턴스를 만듭니다. 자세한 내용은 인스턴스 만들기를 참조하세요.

데이터베이스의 관리 클라이언트를 사용하여 사용자를 관리하려면 인스턴스에 기본 사용자를 구성해야 합니다. 자세한 내용은 기본 계정 구성을 참조하세요.

또한 인스턴스에 연결된 관리 클라이언트를 구성해야 합니다. 자세한 내용은 외부 애플리케이션 연결 옵션을 참조하세요.

기본 사용자 계정 구성

새 Cloud SQL 인스턴스를 만들 때는 기본 사용자 계정을 구성해야 인스턴스에 연결할 수 있습니다.

MySQL용 Cloud SQL의 경우 기본 사용자는 root입니다.

기본 사용자를 구성하려면 다음 안내를 따르세요.

Console

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스 페이지로 이동

  2. 인스턴스를 클릭하여 개요 페이지를 엽니다.
  3. 탐색 메뉴에서 사용자를 선택합니다.
  4. 호스트 값이 % (any host)root 사용자를 찾고 추가 작업 메뉴(추가 작업 아이콘)에서 비밀번호 변경을 선택합니다.
  5. 기억할 수 있는 안전한 비밀번호를 지정하고 확인을 클릭합니다.

gcloud

기본 사용자의 비밀번호를 설정합니다.

gcloud sql users set-password root \
    --host=% --instance=[INSTANCE_NAME] --prompt-for-password

REST

다음 요청은 users:update 메서드를 사용하여 루트 사용자 계정('root'@'%')을 업데이트합니다.

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"name": "root", "password": "[PASSWORD]"}' \
     -X PUT \
     'https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users?name=root&host=%25'

사용자 만들기

사용자를 만들려면 다음 안내를 따르세요.

Console

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스 페이지로 이동

  2. 인스턴스를 선택하여 개요 페이지를 엽니다.
  3. 탐색 메뉴에서 사용자를 선택합니다.
  4. 사용자 계정 생성을 클릭합니다.
  5. 사용자 계정 만들기 대화상자에서 다음을 지정합니다.
    • 사용자 이름.
    • 비밀번호
    • 호스트(원하는 경우)

      기본값은 '%'인데, 이는 호스트 목록에 제한이 없음을 의미합니다. IP 주소 또는 IP 주소 범위를 제공해 이 주소에서 연결하는 사용자만 데이터베이스에 액세스하도록 허용할 수도 있습니다.

  6. 만들기를 클릭합니다.

Cloud SQL을 사용하여 생성된 사용자에게는 cloudsqlsuperuser 역할과 연결된 권한(CREATEROLE, CREATEDB, LOGIN)이 부여됩니다. 이러한 사용자가 만든 사용자는 데이터베이스 연결 권한을 가지고 있으므로 삭제하지 못할 수 있습니다.

Cloud SQL로 생성된 사용자에게는 FILESUPER를 제외한 모든 권한이 부여됩니다. 사용자 권한을 변경해야 할 경우 mysql 클라이언트에서 GRANT 또는 REVOKE 명령어를 사용합니다.

gcloud

사용자를 만듭니다.

gcloud sql users create [USER_NAME] \
   --host=[HOST] --instance=[INSTANCE_NAME] --password=[PASSWORD]

Cloud SQL을 사용하여 생성된 사용자에게는 cloudsqlsuperuser 역할과 연결된 권한(CREATEROLE, CREATEDB, LOGIN)이 부여됩니다. 이러한 사용자가 만든 사용자는 데이터베이스 연결 권한을 가지고 있으므로 삭제하지 못할 수 있습니다.

Cloud SQL로 생성된 사용자에게는 FILESUPER를 제외한 모든 권한이 부여됩니다. 사용자 권한을 변경해야 할 경우 mysql 클라이언트에서 GRANT 또는 REVOKE 명령어를 사용합니다.

Cloud SQL의 사용자 이름 길이 제한은 온프레미스 MySQL과 동일합니다. MySQL 8.0은 32자(영문 기준), 이전 버전은 16자(영문 기준)입니다.

REST

다음 요청에서는 users:insert 메서드를 사용하여 사용자 계정 'user_name'@'%'을 만듭니다.

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"host": "%", "name": "[USER_NAME]", "password": "[PASSWORD]"}' \
     -X POST \
     https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users

Cloud SQL을 사용하여 생성된 사용자에게는 cloudsqlsuperuser 역할과 연결된 권한(CREATEROLE, CREATEDB, LOGIN)이 부여됩니다. 이러한 사용자가 만든 사용자는 데이터베이스 연결 권한을 가지고 있으므로 삭제하지 못할 수 있습니다.

Cloud SQL로 생성된 사용자에게는 FILESUPER를 제외한 모든 권한이 부여됩니다. 사용자 권한을 변경해야 할 경우 mysql 클라이언트에서 GRANT 또는 REVOKE 명령어를 사용합니다.

Cloud SQL의 사용자 이름 길이 제한은 온프레미스 MySQL과 동일합니다. MySQL 8.0은 32자(영문 기준), 이전 버전은 16자(영문 기준)입니다.

MySQL 클라이언트

  1. mysql 프롬프트에서 사용자를 만듭니다.
      CREATE USER '[USER_NAME]'@'%'
         IDENTIFIED BY '[PASSWORD]';
      
  2. 사용자 테이블을 표시하여 사용자 만들기를 확인할 수 있습니다.
    SELECT user, host FROM mysql.user;
    
    2세대 인스턴스의 경우 출력이 이 예시와 유사하게 나타납니다.
    +----------+-----------+
    | user     | host      |
    +----------+-----------+
    | root     | %         |
    | newuser  | %         |
    +----------+-----------+
    1 row in set (0.01 sec)
    
  3. GRANT 문으로 사용자에게 권한을 부여합니다. 자세한 내용은 MySQL에서 제공하는 권한을 참조하세요.
  4. 변경사항이 유지되도록 mysql.user 테이블을 삭제합니다.
      FLUSH TABLES mysql.user;
    

사용자 비밀번호 변경

사용자 비밀번호를 변경하려면 다음 안내를 따르세요.

Console

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스 페이지로 이동

  2. 인스턴스를 선택하여 개요 페이지를 엽니다.
  3. 탐색 메뉴에서 사용자를 선택합니다.
  4. 업데이트할 사용자의 추가 작업(추가 작업 아이콘)을 클릭합니다.
  5. 비밀번호 변경을 선택하고 새 비밀번호를 지정한 후 확인을 클릭합니다.

gcloud

비밀번호를 업데이트합니다.

gcloud sql users set-password [USER_NAME] \
   --host=[HOST] --instance=[INSTANCE_NAME] --prompt-for-password

REST

다음 요청에서는 users:update 메서드를 사용하여 사용자 계정 'user_name'@'%'의 비밀번호를 업데이트합니다. 사용자의 호스트가 다를 경우 호출을 올바른 호스트로 수정해야 합니다.

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"name": "[USER_NAME]", "host": "%", "password": "[PASSWORD]"}' \
     -X PUT \
     'https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users?name=[USER_NAME]&host=%25'

MySQL 클라이언트

  1. mysql 프롬프트에서 비밀번호를 변경합니다.
    SET PASSWORD FOR [USER] = PASSWORD('auth_string');
    
  2. 변경사항이 유지되도록 mysql.user 테이블을 삭제합니다.
    FLUSH TABLES mysql.user;
    

사용자 업데이트

호스트 또는 권한 등의 사용자 속성을 업데이트하려면 mysql 클라이언트를 사용해야 합니다. 자세한 내용은 MySQL 문서의 MySQL 사용자 계정 관리를 참조하세요.

사용자 나열

사용자를 나열하려면 다음 안내를 따르세요.

Console

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스 페이지로 이동

  2. 인스턴스를 선택하여 개요 페이지를 엽니다.
  3. 탐색 메뉴에서 사용자를 선택합니다.

gcloud

이 인스턴스의 사용자를 나열합니다.

gcloud sql users list --instance=[INSTANCE_NAME]

이 명령어의 전체 매개변수 목록을 보려면 gcloud sql 사용자 목록 참조 페이지를 확인하세요.

REST

아래 요청에서는 users:list 메서드를 사용하여 인스턴스에 정의된 사용자를 나열합니다.

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     -X GET \
     https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users

MySQL 클라이언트

mysql 프롬프트에서 MySQL 사용자를 나열합니다.

SELECT user, host FROM mysql.user;

루트 사용자 계정만 구성된 2세대 인스턴스의 경우 출력이 이 예시와 유사하게 나타납니다.

+------+-----------+
| user | host      |
+------+-----------+
| root | %         |
+------+-----------+
1 row in set (0.01 sec)

이 예는 user'root'@'%'가 추가된 인스턴스의 사용자를 보여줍니다. 비밀번호 필드는 비밀번호의 해시를 보여줍니다.

사용자 삭제

사용자를 삭제하려면 다음 안내를 따르세요.

사용자를 삭제하기 전에 이 사용자가 가지고 있는 모든 객체를 삭제하거나 소유권을 다시 할당하고 다른 객체에 대해 부여받은 역할을 취소해야 합니다.

Console

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스 페이지로 이동

  2. 인스턴스를 선택하여 개요 페이지를 엽니다.
  3. 탐색 메뉴에서 사용자를 선택합니다.
  4. 삭제할 사용자의 추가 작업(추가 작업 아이콘)을 클릭합니다.
  5. 삭제를 선택하고 확인을 클릭합니다.

gcloud

사용자를 삭제합니다.

gcloud sql users delete [USER_NAME] --host=[HOST] --instance=[INSTANCE_NAME]

REST

다음 요청에서는 users:delete 메서드를 사용하여 사용자 계정 'user_name'@'%'를 삭제합니다.

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"name": "[USER_NAME]", "host": "%"}' \
     -X DELETE \
     'https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users?host=%25&name=[USER_NAME]'

MySQL 클라이언트

  1. mysql 프롬프트에서 사용자를 삭제합니다.
    DROP USER '[USER_NAME]'@'[HOST_NAME]';
    

    DROP USER 문에 대한 자세한 내용은 MySQL 문서를 참조하세요.

  2. 변경사항이 유지되도록 mysql.user 테이블을 삭제합니다.
    FLUSH TABLES mysql.user;
    

다음 단계