* Use MySQL Image
* Manage Image/Container
* Container Shell Access MySQL
Official Document
MySQL - Official Image | Docker Hub
MySQL :: MySQL 8.0 Reference Manual :: 4.5.4 mysqldump — A Database Backup Program
MySQL——mysqldump参数大全
Practice In Action
Use MySQL Image
[ ~ Approach I ~ ]
Start MySQL Server Instance
version: '3.1'
services:
mysql:
image: mysql:8.0
restart: unless-stopped
volumes:
- ./{some/path/on/your/host}/datadir /var/lib/mysql
ports:
- {mapping_port}: 3306
environment:
MYSQL_ROOT_PASSWORD: {MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: {database}
MYSQL_USER: {username}
MYSQL_PASSWORD: {MYSQL_PASSWORD}
docker compose -f stack.yml up/down
Connect to MySQL
docker compose -f stack.yml start/restart/stop
docker compose -f stack.yml images/logs
[ ~ Approach II ~ ]
docker run [--security-opt="seccomp=unconfined" ] -p {mapping_port}:3306 --name mysql -v ./{some/path/on/your/host}/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD={MYSQL_ROOT_PASSWORD} -d mysql:{tag}
Manage Image/Container
docker container ls -a
docker container create/run {IMAGE_ID/REPOSITORY}
docker container start/restart/stop/stats {CONTAINER_ID/NAMES}
docker container logs/rm {CONTAINER_ID/NAMES}
docker container prune -- Remove unused containers
docker image history /rm {IMAGE_ID/REPOSITORY}
docker image prune -- Remove unused images
Container Shell Access MySQL
docker logs {CONTAINER_ID/NAMES}
docker exec -it {CONTAINER_ID/NAMES} bash
root@{CONTAINER_ID}:/
root@{CONTAINER_ID}:/
mysql> CREATE USER 'new_user' @'localhost' IDENTIFIED BY 'password' ;
mysql> GRANT ALL PRIVILEGES ON * . * TO 'new_user' @'localhost' ;
mysql> FLUSH PRIVILEGES;
mysql> use {databasename};
mysql> set names utf8;
mysql> source /var/lib/mysql/{databasename}.sql;
docker exec {CONTAINER_ID/NAMES} sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > ./{some/path/on/your/host}/all-databases.sql
docker exec -i {CONTAINER_ID/NAMES} sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < ./{some/path/on/your/host}/all-databases.sql
MySQL
Turn Off SQL_MODE - ONLY_FULL_GROUP_BY
SET GLOBAL sql_mode= (SELECT REPLACE(@@sql _mode,'ONLY_FULL_GROUP_BY' ,'' ));
Get TABLE_ROWS/AUTO_INCREMENT
SELECT TABLE_NAME, TABLE_ROWS FROM information_schema.TABLES
WHERE TABLE_SCHEMA = '{tablename}'
and TABLE_ROWS > 0
ORDER BY TABLE_NAME;
SELECT TABLE_NAME, sum (TableA) TableA, sum (TableB) TableB FROM
(SELECT TABLE_NAME, case when TABLE_SCHEMA= '{tablenameA}' then AUTO_INCREMENT else 0 end TableA, case when TABLE_SCHEMA= '{tablenameB}' then AUTO_INCREMENT else 0 end TableB
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA in ('{tablenameA}' , '{tablenameB}' )
AND AUTO_INCREMENT > 1 group by TABLE_SCHEMA, TABLE_NAME) w
group by TABLE_NAME order by TABLE_NAME;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)