IBM Cloud Docs
사용자, 역할 및 권한 관리

사용자, 역할 및 권한 관리

MySQL 5.7은 역할 시스템을 사용하여 데이터베이스 권한을 관리합니다. UI및 MySQL 쉘 모두에서 사용자를 작성하십시오. UI에서 생성된 사용자는 admin 과 거의 동일한 권한을 갖지만 다른 사용자를 만들 수는 없습니다. 관리자는 CREATE USERGRANT 옵션을 모두 가지고 있으므로 사용자를 생성하고 새 사용자를 생성할 수 있는 권한을 포함하여 모든 권한을 부여할 수 있습니다.

mysql> SELECT DISTINCT GRANTEE FROM information_schema.user_privileges;
+-----------------------------+
| GRANTEE                     |
+-----------------------------+
| 'ibm'@'localhost'           |
| 'mysql.session'@'localhost' |
| 'mysql.sys'@'localhost'     |
| 'ibm-backup'@'localhost'    |
| 'admin'@'%'                 |
| 'ibm-replication'@'%'       |
| 'ibm-monitor'@'%'           |
+-----------------------------+
+-----------------+
| user            |
+-----------------+
| admin           |
| ibm-monitor     |
| ibm-replication |
| ibm             |
| ibm-backup      |
| mysql.session   |
| mysql.sys       |
+-----------------+

아래 사용자는 IBM Cloud에 의해 유지보수되며 사용자가 변경하거나 삭제하지 않아야 합니다.


| ibm-monitor     |
| ibm-replication |
| ibm             |
| ibm-backup      |

IBM Cloud 에서 새 배포를 프로비저닝하면 MySQL 에 액세스하고 관리할 수 있는 admin 사용자가 자동으로 부여됩니다.

서비스 자격 증명의 UI에서 Cloud Databases CLI 플러그인 또는 Cloud Databases API를 사용하여 사용자를 추가합니다.

사용자 관리 명령

보안상의 이유로 mysql.user 테이블에서 DML(Data Manipulation Language) 조회를 실행하지 않는 것이 좋습니다. mysql.user 테이블 변경을 방지하려면 DML 조회를 사용하여 사용자를 관리해야 합니다.

CREATE USER, ALTER USER, RENAME USERDROP USER 와 같은 명령을 사용하여 사용자를 관리하십시오.

해당 호스트 정보가 있지만 인증 정보 및 비밀번호 해시가 없는 사용자 목록은 다음 명령을 실행하여 추출할 수 있습니다.

mysql> SELECT DISTINCT GRANTEE FROM information_schema.user_privileges;

admin 사용자

IBM Cloud에 새 배치를 프로비저닝할 때 MySQL에 액세스하고 관리할 수 있는 관리 사용자가 자동으로 지정됩니다. 관리자 비밀번호를 설정 했으면 이를 사용하여 배치에 연결하십시오.

admin 이 데이터베이스에 테이블과 같은 리소스를 만들면 admin 이 해당 개체를 소유하게 됩니다. UI에서 생성된 사용자는 *.* 에 대한 권한을 가지며, 이는 새로 생성된 모든 사용자가 모든 데이터베이스를 자동으로 볼 수 있다는 의미입니다. MySQL sh를 사용하거나 UI를 만든 사용자의 권한을 수정하여 액세스를 제한합니다. 권한을 제한하려면 사용 가능한 경우 글로벌 권한을 제거하고 지정된 사용자에게 액세스 권한이 있을 것으로 예상되는 데이터베이스 또는 데이터베이스 세트에 권한을 부여하십시오.

연결에 사용하기 전에 admin 비밀번호를 설정하십시오.

UI에서 관리자 비밀번호 설정하기

IBM Cloud 대시보드의 리소스 목록에서 인스턴스를 선택하여 UI를 통해 관리자 비밀번호를 설정합니다. 그런 다음 설정을 선택하십시오. 다음으로 데이터베이스 관리자 비밀번호 변경을 선택합니다.

CLI에서 관리자 비밀번호 설정하기

IBM Cloud CLI Cloud Databases 플러그인에서 cdb user-password 명령을 사용하여 관리 비밀번호를 설정하십시오.

예를 들어 example-deployment 라는 이름의 배포에 대한 관리자 비밀번호를 설정하려면 다음 명령을 사용합니다:

ibmcloud cdb user-password example-deployment admin <newpassword>

API에서 관리자 비밀번호 설정하기

서비스의 개요 패널 배포 세부 정보 섹션에 표시되는 파운데이션 엔드포인트는 API를 통해 이 배포에 액세스할 수 있는 기본 URL 을 제공합니다. 지정된 사용자의 비밀번호 설정 엔드포인트와 함께 사용하여 관리 비밀번호를 설정하십시오.

curl -X PATCH `https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/users/admin` \
-H `Authorization: Bearer <>` \
-H `Content-Type: application/json` \
-d `{"password":"newrootpasswordsupersecure21"}` \

기타 ibm 사용자

ibmibm-replication 계정은 배치의 유일한 수퍼 유저입니다. 사용자는 수퍼유저 계정을 사용할 수 없습니다. 이러한 사용자는 배치 안정성을 보장하는 복제, 메트릭 및 기타 기능을 관리하는 내부 관리 계정입니다.

mysql 사용을 통해 작성된 사용자

IBM Cloud 전체를 통해 사용자 작성을 생략하고 mysql 사용으로 MySQL에 직접 사용자를 작성할 수 있습니다. 이렇게 하면 MySQL의 원시 역할 및 사용자 관리를 사용할 수 있습니다. mysql 에서 만든 사용자/역할은 모든 권한이 수동으로 설정되어 있어야 하며, 자신이 만든 개체에 대한 권한도 수동으로 설정되어 있어야 합니다.

MySQL에서 직접 작성된 사용자는 _서비스 신임 정보_에는 나타나지 않지만 선택하는 경우 이를 추가할 수 있습니다.

이러한 사용자는 _서비스 인증 정보_에 추가되더라도 IAM 제어와 통합되지 않습니다.

테이블에 대한 사용자 액세스

mysql database 삭제는 가능하지 않지만 내부 사용자가 포함된 mysql.users 테이블을 포함하여 사용자가 테이블을 삭제할 수 있습니다. 이 조치로 인해 특정 시점 복구(PITR)만 해결할 수 있는, 형성 중단이 발생할 수 있으므로 mysql database에 속하는 테이블을 삭제하지 않아야 합니다.

IBM Cloud 는 클라이언트가 삭제한 시스템 테이블로 인해 포메이션이 깨지는 것을 경고하지 않습니다.

추가 사용자 및 연결 문자열

Databases for MySQL 배치에 대한 액세스는 admin 사용자로 제한되지 않습니다. 서비스 인증 정보 패널(IBM CLI) 또는 IBM Cloud Databases API를 사용하여 사용자를 작성할 수 있습니다.

배치에 있는 모든 사용자는 공용 또는 개인 엔드포인트에 대한 연결 문자열을 포함하여 연결 문자열을 사용할 수 있습니다.

사용자를 작성할 때 특정 데이터베이스 역할 및 권한이 지정됩니다. 이러한 권한에는 로그인하고 데이터베이스를 작성하고 다른 사용자를 작성할 수 있는 기능이 포함됩니다. 자세한 정보는 사용자, 역할 및 권한 관리 페이지를 참조하십시오.

서비스 인증 정보에서 사용자 작성

  1. 서비스에 대한 서비스 대시보드로 이동하십시오.
  2. _서비스 인증 정보_를 클릭하여 서비스 인증 정보 패널을 여십시오.
  3. 새 인증 정보를 클릭하십시오.
  4. 새 인증 정보에 대한 설명 이름을 선택하십시오.
  5. (선택사항) 새 인증 정보가 공용 또는 개인용 엔드포인트를 사용하는지를 지정하십시오. 인라인 구성 매개변수 추가 필드에서 { "service-endpoints": "public" } / { "service-endpoints": "private" }를 사용하여 지정된 엔드포인트를 사용하는 연결 문자열을 생성하십시오. 엔드포인트 사용은 적용되지 않습니다. 연결 호스트에 있는 호스트 이름을 제어할 뿐입니다. 공용 엔드포인트는 기본적으로 생성됩니다.
  6. 새 인증 정보를 제공하려면 추가를 클릭하십시오. 사용자 이름 및 비밀번호와 MySQL 데이터베이스의 연관된 데이터베이스 사용자가 자동 생성됩니다.

새 인증 정보가 테이블에 표시되며 연결 문자열은 인증 정보 보기 아래의 click-to-copy 필드에서 JSON으로 사용 가능합니다.

명령행에서 사용자 작성

IBM Cloud CLI 및 클라우드 데이터베이스 플러그인을 통해 서비스를 관리하는 경우 cdb user-create를 사용하여 새 사용자를 작성할 수 있습니다. 예를 들어, "example-deployment"에 대해 새 사용자를 작성하려면 다음 명령을 사용하십시오.

ibmcloud cdb user-create example-deployment <newusername> <newpassword>

태스크가 완료되면 ibmcloud cdb deployment-connections 명령을 사용하여 새 사용자의 연결 문자열을 검색할 수 있습니다.

API에서 사용자 작성

서비스의 개요 패널 _배치 세부사항_에 표시된 _기본 엔드포인트_는 API를 통해 이 배치에 액세스하기 위한 기본 URL을 제공합니다. 사용자를 작성 및 관리하려면 /users 엔드포인트에서 기본 URL을 사용하십시오.

curl -X POST 'https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/users' \
-H "Authorization: Bearer $APIKEY" \
-H "Content-Type: application/json" \
-d '{"username":"jane_smith", "password":"newsupersecurepassword"}'

태스크가 완료된 후 /users/{userid}/connections 엔드포인트에서 새 사용자의 연결 문자열을 검색할 수 있습니다.

_서비스 인증 정보_에 사용자 추가

CLI에서 사용자를 새로 작성하면 해당 사용자의 연결 문자열이 _서비스 인증 정보_에 자동으로 채워지지 않습니다. 추가하려는 경우 기존 사용자 정보로 새 인증 정보를 작성할 수 있습니다.

JSON 필드 _인라인 구성 매개변수 추가_에 사용자 이름 및 비밀번호를 입력하거나, JSON 정보가 저장된 파일을 지정하십시오. 예를 들어, 필드에 {"existing_credentials":{"username":"Robert","password":"supersecure"}}를 입력하면 사용자 이름 "Robert"와 비밀번호 "supersecure"가 연결 문자열에 채워진 _서비스 인증 정보_가 생성됩니다.

기존 사용자의 인증 정보를 생성해도 해당 사용자를 확인하거나 작성하지 않습니다.