实验设置说明和要求
保护您的账号和进度。请务必在无痕浏览器窗口中,使用实验凭证运行此实验。

在執行資料庫遷移服務工作時,轉移 MySQL 使用者資料

实验 55 分钟 universal_currency_alt 1 积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP861

Google Cloud 自學實驗室標誌

總覽

資料庫遷移服務可將結構定義、資料和中繼資料等 MySQL 資料庫物件,有效率地從來源遷移至目的地執行個體。執行遷移工作時,所有資料庫和結構定義中的資料表會全部移動,但下列系統資料庫除外:sysmysqlperformance_schemainformation_schema

使用者和權限的相關資訊會保留在 MySQL 系統資料庫內。資料庫遷移服務工作不會轉移這些系統資料庫,因此建立目的地 Cloud SQL 執行個體後,需要在執行個體中管理使用者和權限。如要詳細瞭解遷移作業準確度,請參閱「遷移作業準確度」指南。

如果物件的 DEFINER 子句中指定的使用者沒有在目的地執行個體中,物件在遷移後可能無法叫用。詳情請參閱「建立並執行含有 DEFINER 子句的中繼資料 MySQL 遷移工作」指南。

為防止遷移後在目的地執行個體叫用物件時出錯,請在執行遷移工作前,完成下列兩項操作之一:

  • 確定使用者存在:在 MySQL 目的地執行個體建立必要的使用者。確定與 DEFINER 子句相關聯的所有使用者都存在於目的地中。
  • 更新安全權限:在 MySQL 來源執行個體中,將 DEFINER 子句變更為 INVOKER,這會將目的地的資料存取安全權限設為執行查詢的使用者權限,而非定義物件的使用者權限。

滿足這些必要條件後,請建立並儲存資料庫遷移服務工作,然後啟動已儲存的工作。遷移作業順利完成後,最後一個步驟是驗證 MySQL 適用的 Cloud SQL 執行個體上的使用者中繼資料。

學習內容

在本實驗室中,您會學會如何在執行資料庫遷移服務工作時轉移 MySQL 使用者資料:

  • 找出來源執行個體中的現有 MySQL 使用者。
  • 在 MySQL 來源執行個體中,將 DEFINER 子句更新為 INVOKER
  • 建立並儲存資料庫遷移服務工作,但不啟動。
  • 在 Cloud SQL 目的地執行個體建立使用者。
  • 啟動先前建立的資料庫遷移服務工作。
  • 檢查 Cloud SQL 目的地執行個體內的使用者中繼資料。

設定和需求

瞭解以下事項後,再點選「Start Lab」按鈕

請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。

您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。

為了順利完成這個實驗室,請先確認:

  • 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
  • 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。

如何開始研究室及登入 Google Cloud 控制台

  1. 點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:

    • 「Open Google Cloud console」按鈕
    • 剩餘時間
    • 必須在這個研究室中使用的臨時憑證
    • 完成這個實驗室所需的其他資訊 (如有)
  2. 點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」

    接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。

    提示:您可以在不同的視窗中並排開啟分頁。

    注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」
  3. 如有必要,請將下方的 Username 貼到「登入」對話方塊。

    {{{user_0.username | "Username"}}}

    您也可以在「Lab Details」窗格找到 Username。

  4. 點選「下一步」

  5. 複製下方的 Password,並貼到「歡迎使用」對話方塊。

    {{{user_0.password | "Password"}}}

    您也可以在「Lab Details」窗格找到 Password。

  6. 點選「下一步」

    重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。 注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
  7. 按過後續的所有頁面:

    • 接受條款及細則。
    • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
    • 請勿申請免費試用。

Google Cloud 控制台稍後會在這個分頁開啟。

注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。「導覽選單」圖示和搜尋欄位

啟動 Cloud Shell

Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。

  1. 點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示 「啟動 Cloud Shell」圖示

  2. 系統顯示視窗時,請按照下列步驟操作:

    • 繼續操作 Cloud Shell 視窗。
    • 授權 Cloud Shell 使用您的憑證發出 Google Cloud API 呼叫。

連線建立完成即代表已通過驗證,而且專案已設為您的 Project_ID。輸出內容中有一行文字,宣告本工作階段的 Project_ID

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。

  1. (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
  1. 點按「授權」

輸出內容:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project

輸出內容:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南

確認已啟用 Database Migration API

  1. 前往 Google Cloud 控制台,在標題列的「搜尋」欄位輸入 Database Migration API,然後點選搜尋結果中的「Database Migration API」

  2. 請視需要點選「啟用」來啟用 API。

工作 1:找出來源執行個體中的現有 MySQL 使用者

與其他 Cloud 資源類似,目的地 Cloud SQL 執行個體的存取權和權限,都是在專案層級使用 Identity and Access Management (IAM) 控制。詳情請參閱「Cloud SQL 適用的 IAM」指南。

在這項工作中,您要找出透過資料庫存取控管管理的資料庫使用者,例如管理員和超級使用者。不同於與透過 IAM 管理的使用者,這些使用者可能需要存取目的地 Cloud SQL 執行個體,才能在授予更廣泛的 IAM 存取權之前測試遷移工作結果。詳情請參閱「關於 MySQL 使用者」指南。

連至 MySQL 來源執行個體

  1. 前往 Google Cloud 控制台,依序點選標題列的「導覽選單」圖示 「導覽選單」圖示 >「Compute Engine」>「VM 執行個體」

  2. 找出 dms-mysql-training-vm 執行個體所在的那一行。

  3. 在「連線」部分點選「SSH」,開啟終端機視窗。

  4. 如果出現提示訊息,請點選「授權」

您可以忽略 SSH 視窗中顯示的任何升級警告。

  1. 執行下列指令,在終端機視窗連至 MySQL 互動式控制台:
mysql -u admin -p
  1. 系統提示輸入密碼時,請輸入:
changeme!

找出現有的 MySQL 使用者

  1. 執行下列查詢,找出現有的 MySQL 使用者:
select host, user, authentication_string from mysql.user order by user;

請注意系統使用者 debian-sys-maint、mysql.session 和 mysql.sys。這些使用者不需要重新建立,因為建立目的地執行個體後,會由 MySQL 自動產生。

  1. 執行修改後的查詢,排除下列系統使用者:
select host, user, authentication_string from mysql.user where user not like '%mysql%' and user not like '%debian%' order by user;
  1. 查看需要在目的地 Cloud SQL 執行個體重新建立的使用者清單:
主機 使用者
localhost admin
% admin
localhost bsmith
localhost dwilliams
localhost mhill
localhost root
% root

在後續工作中,您會在執行資料庫遷移服務工作時建立超級使用者。您也會在遷移作業建立 Cloud SQL 目的地執行個體後,新增其他使用者。

  1. 請勿關閉終端機視窗,下一項工作還會用到。

工作 2:在 MySQL 來源執行個體,將 DEFINER 更新為 INVOKER

在上一項工作,您已找出來源執行個體中的現有 MySQL 使用者。在這項工作中,您要找出並更新資料庫物件,這些物件的 DEFINER 項目是 root,或其他尚未存在於目的地執行個體的使用者。

如果未在目的地執行個體中建立來源執行個體中的使用者,所有相關聯的 DEFINER 項目都必須變更為 INVOKER。具體來說,您應透過管理員等其他使用者,將超級使用者的所有 DEFINER 項目更新為 INVOKER

執行此動作,可避免在遷移後於目的地執行個體叫用物件時失敗。詳情請參閱「建立並執行包含 DEFINER 子句中繼資料的 MySQL 遷移工作」指南中的其他說明文件。

找出包含 DEFINER 項目的物件

如要取得 MySQL 執行個體中有關 DEFINER 的資訊,您可以查詢 INFORMATION_SCHEMA 資料表,找出需要先檢查再遷移的 DEFINER 項目,例如未與 mysql 等系統資料庫建立關聯,因此會移至目的地執行個體的 DEFINER 項目。

  1. 執行下列查詢,找出 DEFINER 項目:
select table_schema, table_name from information_schema.columns where column_name = 'DEFINER' and table_schema != 'mysql';

結果顯示您需要檢查事件、處理常式、觸發條件和檢視表中的 DEFINER 項目。

請注意,部分 DEFINER 項目可能與系統使用者相關聯,不需要採取額外動作。查詢時,系統會排除這些使用者,以便找出各種資料庫物件的 DEFINER 項目。

  1. 執行下列查詢,找出事件中的 DEFINER
select definer, event_schema, event_name from information_schema.events where definer not like '%mysql%' and definer not like '%debian%';

在與非系統使用者相關聯的事件中,沒有 DEFINER 項目。

  1. 執行下列查詢,找出處理常式中的 DEFINER
select definer, routine_schema, routine_name from information_schema.routines where definer not like '%mysql%' and definer not like '%debian%';

在與非系統使用者相關聯的處理常式中,沒有 DEFINER 項目。

  1. 執行下列查詢,找出觸發條件中的 DEFINER
select definer, trigger_schema, trigger_name from information_schema.triggers where definer not like '%mysql%' and definer not like '%debian%';

在與非系統使用者相關聯的觸發條件中,沒有 DEFINER 項目。

  1. 執行下列查詢,找出檢視表中的 DEFINER
select definer, security_type, table_schema, table_name from information_schema.views where definer not like '%mysql%' and definer not like '%debian%' order by definer;
  1. 查看與 mhill 相關聯的檢視表 invoices_storenum_3656 的詳細資料:
definer security_type table_schema table_name
admin@localhost DEFINER customers_data customers_single
admin@localhost DEFINER sales_data invoices_storenum_5173
bsmith@localhost DEFINER customers_data customers_married
bsmith@localhost DEFINER sales_data invoices_storenum_3980
mhill@localhost DEFINER sales_data invoices_storenum_3656

在下一節中,您會將這個檢視表中的 DEFINER 更新為 INVOKER。

請注意,先前找出的其中一位使用者 dwilliams,與檢視表中的 DEFINER 項目都沒有關聯。也請留意,超級使用者沒有 DEFINER 項目。dwilliams 和超級使用者都不需要任何操作。

將 DEFINER 更新為 INVOKER

在這項子工作中,您要將與 mhill 相關聯的 DEFINER 項目更新為 INVOKER

  1. 執行下列指令,查看與 mhill 相關聯的檢視表詳細資料:
select definer, security_type, table_schema, view_definition from information_schema.views where table_name = 'invoices_storenum_3656';
  1. 選取與檢視表相關聯的資料庫:
use sales_data;
  1. 執行下列指令,將檢視表的 DEFINER 更新為 INVOKER
alter sql security INVOKER view invoices_storenum_3656 as (select * from invoices where storeNum = 3656);
  1. 再次查看 DEFINER 項目,確認檢視表中已更新為 INVOKER
select definer, security_type, table_schema, table_name from information_schema.views where definer not like '%mysql%' and definer not like '%debian%' order by definer;

請注意,與 mhill 相關聯的 DEFINER 項目已更新為 INVOKER,而與 admin 和 bsmith 相關聯的 DEFINER 項目維持不變。

結束終端機工作階段

  1. 結束 MySQL 互動式控制台:
exit
  1. 結束終端機工作階段:
exit

點選「Check my progress」,確認目標已達成。 在 MySQL 來源執行個體中,將 DEFINER 子句更新為 INVOKER。

工作 3:建立並儲存資料庫遷移服務工作,但不啟動

在這項工作,您會建立並儲存遷移作業,但不會啟動。具體來說,您將使用虛擬私有雲對接做為連線選項,建立一次性遷移工作,不過建立遷移作業後可以先儲存,稍後再執行。

這樣一來,您就能建立目的地 Cloud SQL 執行個體,且在完成必要工作 (例如在目的地執行個體建立新使用者) 之前,暫緩遷移資料。

取得 MySQL 來源執行個體的連線資訊

  1. 前往 Google Cloud 控制台的「導覽選單」「導覽選單」圖示,依序點選「Compute Engine」>「VM 執行個體」

  2. 找出 dms-mysql-training-vm 執行個體所在的那一行。

  3. 複製內部 IP 的值,例如 10.128.0.2。

為 MySQL 來源執行個體建立新的連線設定檔

  1. 在控制台標題列的「搜尋」欄位輸入資料庫遷移,然後點選搜尋結果中的「資料庫遷移」

  2. 按一下左側窗格中的「連線設定檔」,然後按一下「建立設定檔」

  3. 設定以下必要連線設定檔資訊,其他設定請保留預設值:

屬性
設定檔角色 來源
資料庫引擎 MySQL
連線設定檔名稱 mysql-vm
「連線設定檔 ID」 保留自動產生的值
「主機名稱或 IP 位址」 輸入上一項工作中複製的 MySQL 來源執行個體內部 IP,例如 10.128.0.2
「通訊埠」 3306
「使用者名稱」 admin
「密碼」 changeme!
區域
  1. 點選「建立」

連線設定檔清單中會顯示新的連線設定檔 mysql-vm。

建立新的一次性遷移工作

  1. 在左側窗格中,依序點選「遷移工作」和「建立遷移工作」

  2. 在「建立遷移工作」的「開始」分頁,設定下列值:

屬性
「遷移工作名稱」 vm-to-cloudsql
「遷移工作 ID」 保留自動產生的值
「來源資料庫引擎」 MySQL
「目標區域」
「遷移工作類型」 一次性

其他設定保留預設值。

  1. 按一下「儲存並繼續」

定義來源執行個體

  1. 在「定義來源」分頁的「來源連線設定檔」部分,選取「mysql-vm」

  2. 其他設定保留預設值。

  3. 按一下「儲存並繼續」

定義目的地執行個體

  1. 在「定義目的地」分頁的「目的地叢集類型」部分,選取「現有的執行個體」

  2. 在「目的地執行個體」部分,選取「」。

  3. 按一下「選取並繼續」

  4. 再次輸入執行個體名稱,然後按一下「確認並繼續」

注意:這個步驟可能需要幾分鐘才能完成。

如果系統要求重試,請點選「重試」按鈕重新整理 Service Networking API。

如果收到錯誤訊息,但未提示重試,請務必完成實驗室「設定和需求」一節中的步驟,確認已啟用 Service Networking API。

完成這個步驟後,畫面會顯示更新訊息,通知 this instance will use the existing managed service connection (執行個體將使用現有代管服務連線)。

系統可能需要幾分鐘才能儲存目的地。

定義連線方式

  1. 在「定義連線方式」分頁的「連線方式」部分,選取「虛擬私有雲對接」

  2. 在「虛擬私有雲」部分,選取「預設」。

資料庫遷移服務會依據虛擬私有雲網路 (這個範例中的預設網路) 資訊,設定虛擬私有雲對接。

  1. 點選「設定並繼續」

儲存一次性遷移工作

  1. 查看遷移工作的詳細資料。

  2. 點選「建立工作」

您不需要測試遷移工作。請注意,與使用者相關聯的 DEFINER 項目尚未在目的地執行個體建立,因此現在測試會傳回錯誤訊息。您會在下一項工作建立這些使用者。

  1. 如果系統提示確認操作,請點選「建立」。

遷移工作已建立,但尚未啟動。在後續工作,您會先在 Cloud SQL 目的地執行個體建立新使用者,然後才啟動工作。

點選「Check my progress」,確認目標已達成。 建立並儲存資料庫遷移服務工作,但不啟動。

工作 4:在 Cloud SQL 目的地執行個體建立必要的使用者

在 Cloud SQL 中執行遷移工作前,請先建立必要的 MySQL 使用者,包括管理員和超級使用者,以便在透過 IAM 授予更廣泛的存取權之前測試遷移結果。此外,您必須先建立與 DEFINER 子句相關聯的使用者,才能開始遷移。

在這項工作中,您會建立 admin、bsmith 和 mhill 使用者。

  1. 前往 Google Cloud 控制台,在標題列的「搜尋」欄位輸入 Cloud SQL,然後點選搜尋結果中的「Cloud SQL」

  2. 展開「mysql-cloudsql-master」執行個體,然後點選「mysql-cloudsql」執行個體。

  3. 點選「副本執行個體」選單中的「使用者」。

  4. 點選「新增使用者帳戶」

  5. 設定下表中的屬性,其餘屬性請保留預設值:

屬性
使用者名稱 admin
「密碼」 changeme!
主機名稱 依 IP 位址或位址範圍限制主機
主機 localhost
  1. 按一下「新增」。

  2. 重複步驟 4 至 6,再建立兩位可存取 localhost 的使用者:

使用者 密碼
bsmith mustchangeasap!
mhill update!

點選「Check my progress」,確認目標已達成。 在 Cloud SQL 目的地執行個體建立使用者。

工作 5:執行先前建立的遷移工作

啟動遷移工作

  1. 前往 Google Cloud 控制台,在標題列的「搜尋」欄位輸入資料庫遷移,然後點選搜尋結果中的「資料庫遷移」。> 遷移工作**。

  2. 在左窗格中,按一下「遷移工作」**,然後點選遷移工作 vm-to-cloudsql,查看詳細資料頁面。

  3. 點選「啟動」按鈕,執行遷移工作。

如果系統提示您確認操作,請點選「啟動」

  1. 查看遷移工作狀態。
    • 如果尚未啟動,狀態會顯示為「尚未啟動」,您可以選擇啟動或刪除工作。
    • 啟動後,狀態會顯示為「啟動中…」,然後轉為「執行中」
    • 當狀態變成「已完成」時,表示遷移作業已順利完成,可繼續下一項工作。

點選「Check my progress」,確認目標已達成。 執行先前建立的資料庫遷移服務工作。

工作 6:確認 MySQL 適用的 Cloud SQL 內的使用者中繼資料

連至 MySQL 執行個體

  1. 前往 Google Cloud 控制台,在標題列的「搜尋」欄位輸入 Cloud SQL,然後點選搜尋結果中的「Cloud SQL」

  2. 按一下 mysql-cloudsql 這個執行個體 ID。

  3. 從「主要執行個體」選單點選「總覽」

  4. 向下捲動到「連線至這個執行個體」面板,然後點選「開啟 Cloud Shell」

Cloud Shell 會預先填入連線至 MySQL 的指令:

gcloud sql connect mysql-cloudsql --user=root --quiet
  1. 執行預先填入的指令。

如果系統提示您為 API 授權,請點選「授權」。

  1. 系統提示輸入密碼時,請輸入先前設定的密碼:
supersecret!

您已成功啟用 MySQL 互動式控制台。

查看 MySQL 適用的 Cloud SQL 執行個體內的使用者中繼資料

  1. 執行下列查詢,查看非系統使用者:
select host, user, authentication_string from mysql.user where user not like '%mysql%' and user not like '%debian%' order by user;

請注意您在上一項工作中建立的使用者。

  1. 執行下列查詢,確認使用者中繼資料已成功遷移:
select definer, security_type, table_schema, table_name from information_schema.views where definer not like '%mysql%' and definer not like '%debian%' order by definer;
  1. 查看項目,確認 invoices_storenum_3656 的中繼資料已成功遷移:
definer security_type table_schema table_name
admin@localhost DEFINER customers_data customers_single
admin@localhost DEFINER sales_data invoices_storenum_5173
bsmith@localhost DEFINER customers_data customers_married
bsmith@localhost DEFINER sales_data invoices_storenum_3980
mhill@localhost INVOKER sales_data invoices_storenum_3656
  1. 執行下列指令,在 MySQL 互動式控制台選取資料庫:
use sales_data;
  1. 查詢與 mhill 相關聯的檢視表,確認是否已成功執行:
select * from invoices_storenum_3656;

這項查詢會傳回 27 個資料列。

  1. 結束 MySQL 互動式控制台:
exit

點選「Check my progress」,確認目標已達成。 確認 MySQL 適用的 Cloud SQL 內的使用者中繼資料

恭喜!

您已瞭解如何在執行資料庫遷移服務工作時,轉移 MySQL 使用者資料。

後續步驟/瞭解詳情

進一步瞭解資料遷移、Cloud SQL 資料庫和資料庫遷移服務:

Google Cloud 教育訓練與認證

協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。

使用手冊上次更新日期:2025 年 12 月 4 日

實驗室上次測試日期:2025 年 12 月 10 日

Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

使用无痕模式或无痕浏览器窗口是运行此实验的最佳方式。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。