使用MySQL
遠端端口映射
使本地可以直接用 localhost 連線到遠端 MySQL (以下為 AWS RDS 範例)
通過一台跳板機的方式連線,前提是該台跳板機記得要與 AWS RDS 設定好 security group,讓該台跳板機已經可以連線到 RDS。
ssh -i "~/downloads/test.pem" -L 3306:test-database-1.cgkuzsy.ap-southeast-1.rds.amazonaws.com:3306 ubuntu@ec2-11-111-222-222.ap-southeast-1.compute.amazonaws.com
新增 DB 使用者
新增後給予用戶權限
例如 GRANT SELECT, GRANT UPDATE, GRANT INSERT, GRANT DELETE 等等
CREATE USER 'newusername'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT ON yourdatabase.* TO 'newusername'@'localhost';
Docker 執行 MySQL
stack.yml
# Use root/example as user/password credentials
version: '3.1'
services:
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
- 3306:3306
volumes:
- "./dbdata:/var/lib/mysql"
environment:
MYSQL_ROOT_PASSWORD: example
adminer:
image: adminer
restart: always
ports:
- 8080:8080
之後輸入 docker-compose -f stack.yml up
然後可進入 localhost:8080 查看 adminer 視覺化 GUI 操作資料庫
帳號為 root,密碼為example
讀入範例資料
先在剛才外面 git clone https://github.com/datacharmer/test_db
記得看 yaml 的 volumn 位置
然後進到 docker 執行 sql import
docker exec -it <image id> sh
cd test_db
mysql -u root -pexample < employees.sql
之後回到 adminer 網頁,點選重新載入。即可看到多了 employees 資料庫

使用遠端 MYSQL 免費服務
臨時免費信箱:http://www.yopmail.com/zh/
測試用免費mysql:https://www.db4free.net/signup.php (預設一個資料庫,不可再增加或修改)
於Linux安裝的MySQL
一開始預設只有local可以存取到本地資料夾
停止
/etc/init.d/apache2 start
開啟
sudo /etc/init.d/apache2 start
phpmyadmin中的使用者即為mysql的使用者所以更改後兩者都會變,安裝phpmyadmin套件可參考本書GCE章節。
如在terminal輸入mysql後告知沒有權限,可輸入以下
mysql -u root -p
Docker mysql
安裝
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
進入docker
docker exec -it <docker id> bash
進入 mysql cli
mysql -u root -p
之後輸入密碼 my-secret-pw
從外面連入 docker 進入 mysql shell
docker exec some-mysql sh -c 'mysql -u root -p"my-secret-pw"'
不過這時會收到警告 mysql: [Warning] Using a password on the command line interface can be insecure.
所以可以到 `/etc/mysql/my.cnf` 設置使用者
使用 docker-compose 搭配 GUI(adminer)
version: '3.1'
services:
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
volumes: ["/Users/yicheng/server/database:/db"]
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: example
adminer:
image: adminer
restart: always
ports:
- 8080:8080
帳號為 root 密碼為 example
執行 SQL 檔案
mysql -uroot -pexample < ./user.sql
-u -p 後面接的是帳號和密碼
從 Dump 檔案 Restore DB
在本地端連線 DB (通常會是在本地建立 tunnel 使本地 3306 映射到遠端 3306 port)
mysql -u admin -p'impassword' \
-h 127.0.0.1 -P 3306;
USE test-db;
source test.sql;
Last updated
Was this helpful?