MySQL 사용자 만들기 및 관리

이 페이지에서는 Cloud SQL 인스턴스에서 기본 사용자 계정을 구성하고 다른 사용자 계정을 생성, 삭제, 업데이트하는 방법을 설명합니다.

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

시작하기 전에

이 페이지의 작업을 완료하기 전에 Cloud SQL 인스턴스를 미리 만들어야 합니다. 자세한 내용은 인스턴스 만들기를 참조하세요.

데이터베이스 관리 클라이언트를 사용하여 사용자를 관리하려면 다음을 미리 구성해야 합니다.

기본 사용자 계정 구성

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

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

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

콘솔(2세대)

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

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

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

Console(1세대)

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

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

  2. 1세대 인스턴스를 클릭하여 개요 페이지를 엽니다.
  3. 사용자 탭을 선택합니다.
  4. 사용자 이름이 root이고 호스트 이름이 %(any host)인 사용자가 이미 사용자 목록에 표시되어 있는 경우 루트 사용자를 만들 필요가 없습니다.

    비밀번호를 재설정하려면 추가 작업 메뉴 추가 작업 아이콘에서 비밀번호 변경을 선택합니다.

  5. 그렇지 않으면 사용자 계정 만들기를 클릭합니다.
  6. 사용자 계정 만들기 대화상자에서 사용자 이름에 root를 입력하고 기억할 수 있는 안전한 루트 비밀번호를 입력합니다. 호스트 이름은 Allow any host(%)로 설정된 상태로 둡니다.
  7. 만들기를 클릭합니다.

gcloud

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

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

cURL

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

ACCESS_TOKEN="$(gcloud auth application-default 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'

사용자 만들기

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

콘솔

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

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

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

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

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

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

gcloud

사용자를 만듭니다.

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

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

cURL

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

ACCESS_TOKEN="$(gcloud auth application-default 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로 생성된 사용자에게는 FILESUPER를 제외한 모든 권한이 부여됩니다. 사용자 권한을 변경해야 할 경우 mysql 클라이언트에서 GRANT 또는 REVOKE 명령어를 사용합니다.

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;
    

사용자 비밀번호 변경

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

콘솔

  1. Google Cloud Platform 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

cURL

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

ACCESS_TOKEN="$(gcloud auth application-default 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 사용자 계정 관리를 참조하세요.

사용자 나열

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

콘솔

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

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

  2. 인스턴스를 선택하여 개요 페이지를 엽니다.
  3. 액세스 제어 > 사용자를 선택합니다.

gcloud

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

gcloud sql users list --instance=[INSTANCE_NAME]

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

cURL

다음 요청은 users:list 메소드를 사용하여 인스턴스에 정의된 사용자를 나열합니다.

ACCESS_TOKEN="$(gcloud auth application-default 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'@'%'가 추가된 인스턴스의 사용자를 보여줍니다. 비밀번호 필드는 비밀번호의 해시를 보여줍니다.

사용자 삭제

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

콘솔

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

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

  2. 인스턴스를 선택하여 개요 페이지를 엽니다.
  3. 액세스 제어 > 사용자를 선택합니다.
  4. 삭제할 사용자의 추가 작업 추가 작업 아이콘을 클릭합니다.
  5. 삭제를 선택하고 확인을 클릭합니다.

gcloud

사용자를 삭제합니다.

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

cURL

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

ACCESS_TOKEN="$(gcloud auth application-default 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;
    

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

MySQL용 Cloud SQL