Engineering · 1 min read
MySQL CLI:遠端連線與參數
透過本地 proxy port 連上遠端 MySQL,以及參數表:-h host、-P port(大寫)、-p 密碼(要黏著、不能有空格)、-u user、-D database、-e execute。
透過一個本地 port(例如 Cloud SQL proxy 通道)連到遠端 MySQL:
mysql -h 127.0.0.1 -P 20001 -u "$USERNAME" -p"$PASSWORD" -D app_production \
-e "SELECT a.asset_id FROM asset AS a WHERE uploaded_package_id = 100"
| Flag | 長格式 | 意思 |
|---|---|---|
-h | --host | 要連的 host。127.0.0.1 = proxy 通道的本地端,不是直接連雲端 DB。 |
-P | --port | TCP port(預設 3306)。大寫 P,小寫 -p 是密碼。 |
-u | --user | MySQL 帳號。 |
-p | --password | 密碼。-p 後面不能有空格(-pSECRET);-p 單獨用會跳互動輸入。 |
-D | --database | 預設 schema,這樣 asset 就能直接用,不用寫 app_production.asset。 |
-e | --execute | 非互動地跑這段 SQL、印結果、離開。 |
-p pass中間有空格會被解讀成「跳出來問我密碼,然後把pass當成 database 名」——一定要黏著:-p"$PASSWORD"。- 密碼直接寫在 CLI 上,會出現在
ps裡、也會警告不安全;scripting 情境建議改用--defaults-extra-file。
這次的實例: 透過 127.0.0.1:20001 上的 cloud-sql-proxy 通道,查了 prod 的 app_production.asset 裡 uploaded_package_id = 100 的資料。
-P是 port、-p是密碼且要黏著——這兩個大小寫最容易踩,記住就不會把密碼寫成 database 名。
參考來源
- MySQL connecting — https://dev.mysql.com/doc/refman/8.0/en/connecting.html
- MySQL command-line options — https://dev.mysql.com/doc/refman/8.0/en/command-line-options.html
Related: 回到遠端資料庫連線總覽;這些 flag 就是五個座標與連線 URI被拆開的樣子。接著看內嵌 SQL 的四種餵法。