拉取镜像
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/data
docker cp mysql:/etc/mysql/my.cnf /mnt/docker/mysql/my.cnf
docker 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.27
mysql镜像名,后面没有tag后,下载最新的tag,latest
账户密码
# 进入mysql容器
docker exec -it mysql bash
# 登录MySQL
mysql -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;