1. 获取镜像
# 查看可用的稳定版本
sudo docker search mysql
sudo docker pull mysql:8.0.11
sudo docker image ls |grep mysql
2. 创建数据卷
sudo mkdir -p /home/mysql8/{conf,data,logs,mysql-files}
# 赋予data目录读写权限
sudo chmod 777 /home/mysql8/data
sudo chmod 777 /home/mysql8/mysql-files
3. 启动容器
sudo docker run -d -p 3306:3306 --name mysql8 \
-v /home/mysql8/conf:/etc/mysql:rw \
-v /home/mysql8/logs:/var/log/mysql:rw \
-v /home/mysql8/data:/var/lib/mysql:rw \
-v /home/mysql8/mysql-files:/var/lib/mysql-files/:rw \
-e MYSQL_ROOT_PASSWORD=123456 \
--privileged=true \
--restart=always \
mysql:8.0.11
sudo docker start mysql8
sudo docker restart mysql8
sudo docker stop mysql8
sudo docker rm mysql8
4. 验证
sudo docker exec -it mysql8 /bin/bash
mysql -uroot -p123456
# 解决中文显示问题
sudo docker exec -it mysql8 env LANG=C.UTF-8 /bin/bash
mysql -uroot -p123456 --default-character-set=utf8
5. 远程登录
CREATE USER bdapuser IDENTIFIED BY 'bdapuser';
GRANT ALL ON *.* TO 'bdapuser'@'%';
flush privileges;
-- 解决Navicat不支持MySQL8新的加密模式问题(caching_sha_password)
alter user 'bdapuser'@'%' identified with mysql_native_password by 'bdapuser';
GRANT ALL PRIVILEGES ON *.* TO 'bdapuser'@'%';
flush privileges;
-- 查询用户是否创建成功
select user,host from mysql.user;
-- host里有“%”说明是远程用户,然后退出mysql、docker容器,并用客户端工具远程登录测试