2021-10-02

GCP Cloud SQL 公開 IP 連線

GCP Cloud SQL 公開 IP 連線

在此 Cloud SQL 以 MySQL 8 為例。在建立 SQL 執行個體時,連線設定必須勾選「公開 IP」,建立後會配發一個公開的 IP。 在「已授權網路」設定家用電腦或辦公室電腦對外的 IP,為了安全性通常會設定單 IP 通行 x.x.x.x/32。設定好之後,請記得按「儲存」按鈕儲存。

選定執行個體後,在 Cloud SQL 左側選單的「使用者」會有 MySQL 預設的管理帳號 root。從外部連入的用戶為 root@%,並沒有所有授權,例如變更其他用戶的密碼就沒有;而 root@localhost 才有所有授權。

如果你工作的電腦有 MySQL terminal client,可以使用下式連入:

/Applications/XAMPP/bin/mysql -h x.x.x.x -u root -p

如果工作的電腦有 PHP 的執行環境 (MySQL8 需要 PHP7 以上),可以使用 phpMyAdmin 或 Adminer 工具。

# 在存放 adminer.php 的工作目錄啟動 PHP7 內建的測試 web server php -S localhost:8888

使用 phpMyAdmin 管理資料滿方便的。然而比較建議使用 Adminer,可以在建立某個 DB 後,再建立只能存取該 DB 的用戶。以下是 Adminer 產生的 SQL 語法,也可以透過 MySQL client 去執行。

-- 建立用戶 shinder3 並設定密碼 CREATE USER 'shinder3'@'%' IDENTIFIED BY 'shinder3_password'; -- 建立後密碼不能以 root@% 去變更, 只能登入該帳號變更 -- SET PASSWORD = 'shinder33'; -- 只設定用戶可以存取 test 資料庫 GRANT CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, ALTER, CREATE, CREATE VIEW, DELETE, DROP, INDEX, INSERT, REFERENCES, SELECT, SHOW VIEW, TRIGGER, UPDATE, ALTER ROUTINE, EXECUTE ON `test`.* TO 'shinder3'@'%';

以 Adminer 建立的用戶,也可以在 Cloud SQL 左側選單的「使用者」列表中看到,但權限範圍不同。直接透過 GCP console 的「SQL > 使用者」建立的用戶有管理所有資料庫的權限,透過 Adminer 或 MySQL client 的則只有單一 DB 的管理權限。

沒有留言:

FB 留言