拉取镜像
MySQL 的docker镜像主要有两个版本:
官方版本:https://hub.docker.com/_/mysql
Oracle版本:https://hub.docker.com/r/mysql/mysql-server/
拉取命令
docker pull mysql:8.0
配置挂载文件
启动测试容器
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=pwd123456 -d mysql:8.0.27
复制挂载文件
docker cp mysql:/var/lib/mysql /mnt/docker/mysql/datadocker cp mysql:/etc/mysql/my.cnf /mnt/docker/mysql/my.cnfdocker rm -f mysql
配置
数据存放目录
配置文件
启动正式容器
docker run --restart=always \--name mysql \-p 3306:3306 \--privileged=true \-v /mnt/docker/mysql/my.cnf:/etc/mysql/my.cnf \-v /mnt/docker/mysql/data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=pwd123456 \-d mysql:8.0.27
参数说明
-p 3306:3306: 把容器内的3306端口映射到宿主机3306端口--privileged=true: 给容器加上特定权限 。否则会chown: changing ownership of ‘/var/lib/mysql/....‘: Permission denied-v /mnt/docker/mysql/my.cnf:/etc/mysql/my.cnf:把宿主机配置好的my.cnf放到容器内的这个位置中-v /mnt/docker/mysql/data:/var/lib/mysql:把mysql持久化的数据在宿主机内显示,做数据备份-e MYSQL_ROOT_PASSWORD=pwd123456: 指定数据库初始访问密码,第一次设置才有小,后面重启以修改的密码为准mysql:8.0.27mysql镜像名,后面没有tag后,下载最新的tag,latest
账户密码
# 进入mysql容器docker exec -it mysql bash# 登录MySQLmysql -u root -ppwd123456# 修改密码alter USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test@123567pwd';# 添加远程登录用户CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'test@123pwd';GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';flush privileges;
