前言
学习记录。Docker主机系统用的windows server 2019,部署docker mysql。部署过程中,注意数据挂载window container与linux container的命令区别。
1 Docker安装
参考:手把手教您在 Windows Server 2019 上使用 Docker。
2 MySql部署
搜索查看可用 的mysql镜像
docker search mysql
2.1 拉取MySQL镜像
docker pull mysql
2.2 运行MySQL容器
docker run -di --name my-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
-p 端口映射(宿主机映射端口:容器运行端口)
-e 添加环境变量 (MYSQL_ROOT_PASSWORD设置root用户的密码)
参考:dockerhub mysql Environment Variables
2.3 容器中登陆MySQL
//连接容器
docker exec -it my-mysql /bin/bash
//登录
mysql -u root -p
//安装命令vim
apt-get install -y vim
3 MySql数据管理
Docker的数据管理有三种方式:volume、bind mount、tmpfs。(参考:Manage data in Docker)
这里采用 bind mount方式:
(1) “D:\MysqlData:/var/lib/mysql” # mysql数据文件位置
(2) “D:\Mysql:/etc/mysql” # mysql配置文件位置
docker run --name my-mysql -v "D:\MysqlData:/var/lib/mysql" -v "D:\Mysql:/etc/mysql" -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql
docker run --name my-mysql -v /home/mysql/config:/etc/mysql -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=test -p 3306:3306 -d docker.io/mysql:5.7.29
注意:(window container)命令中-v 后面参数用双引号引用
4 MySql远程连接
查看用户列表:
SELECT User, Host FROM mysql.user;
mysql 8.0 默认使用 caching_sha2_password 身份验证机制。通过status查看mysql版本.
远程连接mysql,需要修改相应的加密规则:
create user 'root'@'%' identified by 'test123';
//授权远程连接
GRANT ALL ON *.* TO 'root'@'%';
//更新远程root用户密码及加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
//刷新
flush privileges;
//修改本地访问加密规则
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
//设置密码不过期
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
//刷新
flush privileges;
5 修改时区
修改时区DockerFile
FROM mysql AS base
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 3306 33060
CMD ["mysqld"]
参考:
[1] Docker MySql
[2] Manage data in Docker
[3] mysql-8.0-Dockerfile