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 的管理權限。
沒有留言:
張貼留言