Docker部署MySQL容器

从仓库下载镜像
sudo docker pull mysql:5.7
 
创建容器
docker run --name="mysql" \
    -p 3306:3306 \
    -v /Users/zhangsan/docker/mysql/data:/var/lib/mysql \
    -v /Users/zhangsan/docker/mysql/conf:/etc/mysql/conf.d \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -d mysql:5.7

备注:
--name="mysql" 给容器取名mysql
 
-p 3306:3306  将容器内端口3306映射到宿主机端口3306上,前宿主机:后容器
 
-v /Users/zhangsan/docker/mysql/data:/var/lib/mysql 将宿主机目录/Users/zhangsan/docker/mysql/data挂载到容器目录/var/lib/mysql,将数据保存到宿主机目录方便查看。/var/lib/mysql容器目录为mysql默认的数据存储目录。
 
-d 后台运行容器,并返回容器ID
 
-v /Users/zhangsan/docker/mysql/conf.d:/etc/mysql/conf.d 如果需要自定义的参数,可以新建一个config-file.cnf文件,将参数配置到里面放到宿主机某一个目录,并将该目录挂载到容器的/etc/msyql/conf.d目录中,mysql启动的时候回读取覆盖默认配置
 
-e MYSQL_ROOT_PASSWORD=123456 设置root密码
 
-d 后台运行容器,并返回容器ID
 
备份数据
docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > ~/docker/mysql/backup/all-databases.sql
 
备注:
~/docker/mysql/backup/all-databases.sql 这个是宿主机的全路径
 
进入mysql容器内
docker exec -it mysql bash
 
备注:
通过该命令,命令行就会进入容器内部系统,后面就可以像操作普通linux系统一样操作容器系统了
 
通过上述镜像可以链接其他mysql服务
docker run -it --rm mysql mysql -h'192.168.0.10' -P 10050 -u'root' -p'123456'
 
关于msyql8.0.4以上密码加密方式改变
default-authentication-plugin 的值由 mysql_native_password 变为了caching_sha2_password
 
新的加密方式原来的Navicat客户端连接不上,可通过修改用户密码为老的加密方式,或者将加密方式改为老的加密方式
1、修改用户密码,新建用户的时候也是用老的加密方式:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
CREATE USER test IDENTIFIED WITH mysql_native_password BY '123456';
 
2、修改加密方式,在配置文件中覆盖配置项
default-authentication-plugin=mysql_native_password
查看mysql所有的可配置项及其默认值
docker run -it --rm mysql --verbose --help
 
 
 

猜你喜欢

转载自www.cnblogs.com/wkaca7114/p/docker-mysql.html