docker安装 mysql8.0.21
教程官网
https://hub.docker.com/_/mysql
教程
在docker hub仓库里拉取最新版mysql镜像
[aaa@qq.com mysql]# systemctl start docker //启动docker-server
[aaa@qq.com ~]# docker pull mysql //拉取镜像
运行mysql镜像为容器
[aaa@qq.com conf.d]# docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -v /root/mysql/conf.d:/etc/mysql/conf.d -v /rodata:/var/lib/mysql -d mysql
[aaa@qq.com conf.d]# docker ps //查看正在运行的容器
注意
为什么要在容器运行时设置Mysql 的root用户的密码?
因为在centos上安装一个mysql软件包的时候,会让设置root用户的密码,所以,此时已经下载了mysql的软件环境,在运行镜像后,就相当于安装成功了mysql,所以要在开始运行镜像前设置root的密码,否则在运行完容器后,容器显示不能正常运行
为什么要把docker容器中的目录自定义配置【把docker容器中访问的目录映射到宿主机centos外边】和把docker容器中的mysql保存的数据映射到宿主机外边?
避免因为把docker容器删了,docker中目录下的相关配置和docker中mysql实例运行的数据都被删除,为了保证数据安全,即使docker容器删了,数据依然存在
--name :给要运行的docker容器实例起的名称
-p: docker容器实例中的端口映射到外部端口【供外部访问】3306:3306【第一个3306为外部访问端口,第二个为docker容器中的mysql环境端口】
-e: 修改mysql的root用户的密码
-v: 把docker容器中mysql实例的/etc/mysql/conf.d映射到外部/root/mysql/conf.d目录下,当运行docker容器实例的时候,此目录就直接访问宿主机的/root/mysql/conf.d目录下的文件
-v: 把docker容器中的额mysql实例中的数据映射到外部/root/data目录下,对宿主机/root/data目录下数据的修改就是对docker容器中mysql运行实例产生的数据修改
-d: 以守护进程方式运行此容器
注:/var/lib/mysql是docker容器中的mysql实例运行产生的数据的目录
进入docker中mysql实例内
[aaa@qq.com mysql]# docker exec -it mysql bash //进入到docker容器中mysql实例的伪终端【xshell窗口】
aaa@qq.com:/# mysql -u root -p //输入mysql实例root的用户名和密码【进入之后,就可以像正常的进入一个Mysql数据库进行操作了】
退出mysql
mysql> exit //退出mysql
aaa@qq.com:/# eixt //退出docker容器中的伪xshell窗口,相当于另外一个可以输入linux命令的端口
navicat连接docker容器中的mysql
在连接之前先把防火墙关了或者把对应的外部端口开发
因为是下载的最新的mysql8.0版本以后的,所以在用navicat连接mysql的时候,会出现密码caching_sha2_password cannot be loaded:可查看这篇文章:https://blog.csdn.net/dsl59741/article/details/107891415
spring boot连接mysql
配置文件【其操作和基本的连接mysql的操作相同】