在前面几张介绍了docker的基础使用,从本章开始,使用docker来搭建生产环境,今天主要是搭建mysql数据库。本来是准备使用dockerfile来创建mysql的镜像的,但是弄了几天也没弄好,所以就先放弃,直接使用docker的镜像源来搭建,话不多说,开始搞事情了。
首先去创建mysql容器
# 拉取mysql镜像源
docker pull mysql
# 创建mysql容器
# --restart=always 设置docker重启时容器也重启
# -p 3306:3306 指定容器的3306端口映射到宿主机的3306端口
# -e MYSQL_ROOT_PASSWORD=123456 指定root账户的密码
docker run -itd --name mysql --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
# 进入容器去配置其他的信息
docker exec -it mysql /bin/bash
# 登录mysql数据库,密码是在创建容器的密码
mysql -u root -p
# 这里我需要添加一个mysql用户,通过这个用户来操作数据库
# 如果有不懂的可以参考这篇文章关于数据库那一块的指令:https://blog.csdn.net/weixin_45481406/article/details/105077055
create user 'dingyh'@'%' identified by 'password';
grant all on database.* to 'dingyh'@'%'
完成上面步骤后,我们的数据库就算是配置完成了,现在使用Navicat进行远程连接,然后会出现下面的错误
这主要是由于默认的验证插件造成的。mysql容器默认用户的验证插件是"caching_sha2_password",但是Navicat不能识别这种插件,所以就穿出现这种错误。
# 查询信息
select host, user, plugin from user;
要解决这个问题,需要将插件改为Navicat识别的插件
# 更改插件
alert user 'dingyh'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 刷新权限
flush privileges;
现在就可以通过Navicat连接数据库了