IBM Cloud Docs
管理使用者、角色和權限

管理使用者、角色和權限

MySQL 5.7 使用角色系統來管理資料庫許可權。 從使用者介面及 MySQL Shell 建立使用者。 從使用者介面建立的使用者與 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中佈建新部署時,會自動為您提供 admin 使用者,以存取及管理 MySQL。

使用 Cloud Databases CLI 外掛程式Cloud Databases API,在_服務憑證的_使用者介面中新增使用者。

使用者管理指令

基於安全理由,我們建議您不要在 mysql.user 表格上執行 DML (資料操作語言) 查詢。 若要防止變更 mysql.user 表格,您應該使用 DML 查詢來管理使用者。

使用 CREATE USERALTER USERRENAME USERDROP USER 等指令來管理使用者。

執行下列指令,可以擷取使用者清單及其主機資訊,但不含鑑別資訊及密碼雜湊:

mysql> SELECT DISTINCT GRANTEE FROM information_schema.user_privileges;

admin 使用者

當您在 IBM Cloud中佈建新部署時,系統會自動為您提供管理使用者,以存取及管理 MySQL。 設定管理者密碼 之後,請使用它來連接至您的部署。

admin 在資料庫中建立資源 (例如表格) 時,admin 會擁有該物件。 從使用者介面建立的使用者具有 *.* 的許可權,這表示任何新建立的使用者都可以自動查看任何資料庫。 使用 MySQL sh,或修改使用者介面建立的使用者的許可權來限制存取權。 若要限制許可權,請移除廣域專用權 (如果已啟用),並將專用權授與給定使用者預期具有存取權的資料庫或資料庫集。

請先設定管理者密碼,然後再使用它來連接。

在使用者介面中設定管理員密碼

IBM Cloud Dashboard 的資源清單中選擇您的實例,透過使用者介面設定管理員密碼。 然後,選取 設定。 接下來,選擇變更資料庫管理密碼

在 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's 原生 角色和使用者管理。 在 mysql 中建立的使用者/角色必須手動設定其所有專用權,以及他們所建立物件的專用權。

直接在 MySQL 中建立的使用者不會出現在_服務憑證_中,但您可以選擇 新增這些 使用者。

請注意,即使這些使用者新增至 服務認證,也不會與 IAM 控制項整合。

使用者對表格的存取權

當您無法刪除 mysql database 時,使用者可以捨棄表格,包括包含內部使用者的 mysql.users 表格。 用戶端不應刪除任何屬於 mysql database 的表格,因為此動作可能導致中斷的構成,只能使用「復原點回復 (PITR)」來解決。

由於用戶端捨棄系統表格,IBM Cloud 不會對形成岔斷發出警示。

更多使用者和連線字串

Databases for MySQL 部署的存取權不限於管理使用者。 您可以使用_服務憑證_面板、IBM CLI 或透過 IBM Cloud Databases API 建立使用者。

部署上的所有使用者都可以使用連線字串,包括公用或專用端點的連線字串。

當您建立使用者時,它會獲指派特定的資料庫角色及專用權。 這些專用權包括登入、建立資料庫及建立其他使用者的能力。 如需詳細資訊,請參閱 管理使用者、角色和權限頁 面。

服務憑證中建立使用者

  1. 導覽到您服務的服務儀表板。
  2. 按一下_服務憑證_,開啟_服務憑證_面板。
  3. 按一下新認證
  4. 為您的新憑證選擇一個描述性的名稱。
  5. (選用) 指定新認證應該使用公用或專用端點。 在「新增內嵌設定參數」欄位中使用 { "service-endpoints": "public" } / { "service-endpoints": "private" } 之一,即可使用指定的端點產生連線字串。 未強制使用端點。 它只會控制連線字串中的主機名稱。 依預設會產生公用端點。
  6. 按一下新增以提供新憑證。 MySQL 資料庫會自動產生使用者名稱和密碼,以及相關的資料庫使用者。

新憑證顯示在表格中,連線字串會以 JSON 格式出現在_檢視憑證_下方的按一下複製欄位中。

從命令列建立使用者

如果您透過 IBM Cloud CLI 及 雲端資料庫外掛程式 來管理服務,則可以使用 cdb user-create 來建立新的使用者。 例如,若要為 "example-deployment" 建立新的使用者,請使用下列指令。

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

作業完成之後,您可以使用 ibmcloud cdb deployment-connections 指令來擷取新使用者的連線字串。

從 API 建立使用者

顯示在您服務的_概述_面板_部署詳細資訊_中的 Foundation 端點,提供透過 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」填入連線字串中。

從現有使用者產生認證不會檢查或建立該使用者。