拉取镜像

MySQL 的docker镜像主要有两个版本:
官方版本:https://hub.docker.com/_/mysql
Oracle版本:https://hub.docker.com/r/mysql/mysql-server/

拉取命令

  1. docker pull mysql:8.0

配置挂载文件

启动测试容器

  1. docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=pwd123456 -d mysql:8.0.27

复制挂载文件

  1. docker cp mysql:/var/lib/mysql /mnt/docker/mysql/data
  2. docker cp mysql:/etc/mysql/my.cnf /mnt/docker/mysql/my.cnf
  3. docker rm -f mysql

配置
数据存放目录

配置文件

启动正式容器

  1. docker run --restart=always \
  2. --name mysql \
  3. -p 3306:3306 \
  4. --privileged=true \
  5. -v /mnt/docker/mysql/my.cnf:/etc/mysql/my.cnf \
  6. -v /mnt/docker/mysql/data:/var/lib/mysql \
  7. -e MYSQL_ROOT_PASSWORD=pwd123456 \
  8. -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

账户密码

  1. # 进入mysql容器
  2. docker exec -it mysql bash
  3. # 登录MySQL
  4. mysql -u root -ppwd123456
  5. # 修改密码
  6. alter USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test@123567pwd';
  7. # 添加远程登录用户
  8. CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'test@123pwd';
  9. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
  10. flush privileges;