偶尔有需求,涉及到数据库的改动,那一定要表结构改动、程序调试都先在测试环境淬炼千百遍。
现在流行微服务、docker部署,很容易拉起一整套环境。
Compose File Demo
mysql:
image: mysql:5.7.25
restart: unless-stopped
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: example
ports:
- 3306:3306
MySql Client Operation
比如mysql docker,如何连接并执行命令呢?
试试 mysql -uroot -h 127.0.0.1 -P 3306 -p<your password>
Script from Host
问题来了,一套环境在不同的docker里面,attach docker来来去去也是很恶心的,如何在宿主机上操作mysql呢?
比如我写好了一个建库脚本,可以这么操作:
docker cp backend/ds_market.sql data_store_mysql_1:/docker-entrypoint-initdb.d/ && docker exec data_store_mysql_1 sh -c 'export MYSQL_PWD="$MYSQL_ROOT_PASSWORD" ; mysql -uroot < /docker-entrypoint-initdb.d/ds_market.sql'
查询有哪些库:
docker exec data_store_mysql_1 sh -c 'export MYSQL_PWD="$MYSQL_ROOT_PASSWORD" ; mysql -uroot -e "show databases;"'
要查下有哪些表:
docker exec data_store_mysql_1 sh -c 'export MYSQL_PWD="$MYSQL_ROOT_PASSWORD" ; mysql -uroot -e "use datasets_market;show tables;"'
查询一些条目
docker exec data_store_mysql_1 sh -c 'export MYSQL_PWD="$MYSQL_ROOT_PASSWORD" ; mysql -uroot -e "use datasets_market;select * from datasets limit 10;"'