1. 获取镜像

  1. # 查看可用的稳定版本
  2. sudo docker search mysql
  3. sudo docker pull mysql:8.0.11
  4. sudo docker image ls |grep mysql

2. 创建数据卷

  1. sudo mkdir -p /home/mysql8/{conf,data,logs,mysql-files}
  2. # 赋予data目录读写权限
  3. sudo chmod 777 /home/mysql8/data
  4. sudo chmod 777 /home/mysql8/mysql-files

3. 启动容器

  1. sudo docker run -d -p 3306:3306 --name mysql8 \
  2. -v /home/mysql8/conf:/etc/mysql:rw \
  3. -v /home/mysql8/logs:/var/log/mysql:rw \
  4. -v /home/mysql8/data:/var/lib/mysql:rw \
  5. -v /home/mysql8/mysql-files:/var/lib/mysql-files/:rw \
  6. -e MYSQL_ROOT_PASSWORD=123456 \
  7. --privileged=true \
  8. --restart=always \
  9. mysql:8.0.11
  10. sudo docker start mysql8
  11. sudo docker restart mysql8
  12. sudo docker stop mysql8
  13. sudo docker rm mysql8

4. 验证

  1. sudo docker exec -it mysql8 /bin/bash
  2. mysql -uroot -p123456
  3. # 解决中文显示问题
  4. sudo docker exec -it mysql8 env LANG=C.UTF-8 /bin/bash
  5. mysql -uroot -p123456 --default-character-set=utf8

5. 远程登录

  1. CREATE USER bdapuser IDENTIFIED BY 'bdapuser';
  2. GRANT ALL ON *.* TO 'bdapuser'@'%';
  3. flush privileges;
  4. -- 解决Navicat不支持MySQL8新的加密模式问题(caching_sha_password
  5. alter user 'bdapuser'@'%' identified with mysql_native_password by 'bdapuser';
  6. GRANT ALL PRIVILEGES ON *.* TO 'bdapuser'@'%';
  7. flush privileges;
  8. -- 查询用户是否创建成功
  9. select user,host from mysql.user;
  10. -- host里有“%”说明是远程用户,然后退出mysqldocker容器,并用客户端工具远程登录测试