1. 前言
前提是已经安装docker,如果没安装请下载,几分钟即可安装完成,地址: https://www.docker.com/products/docker-desktop/
2. 选择官方镜像
https://hub.docker.com/_/mysql/tags
本文选择选择8.0版本
[图片上传失败...(image-663541-1661870490353)]
3.下载安装
docker pull mysql:8.0
[图片上传失败...(image-d6b33-1661870490354)]
- 查看镜像
[图片上传失败...(image-9c1a6-1661870490354)]
4. 启动
设置密码为root,容器名称为mysql
docker run --name mysql1 -p 3306:3306 -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0
[图片上传失败...(image-c3c00-1661870490354)]
4.1 参数说明
-
-p 3306:3306
表示把容器端口映射到本地,如果不映射本地连接不上数据库,只能进入到容器里面连接
-
-v /data/mysql:/var/lib/mysql,
数据文件目录,表示把容器/var/lib/mysql目录,映射到/data/mysql,这样不会因容器重新启动导致数据丢失
-
-e MYSQL_ROOT_PASSWORD=root
表示mysql 密码为root
-
--name mysql
表示容器名称为mysql
4.2 查看容器列表
[图片上传失败...(image-6282d8-1661870490354)]
5. 登录数据库
5.1 命令行方式
查看容器列表,容器ID为0a83ebe4baae
docker exec -it 0a83ebe4baae /bin/bash
[图片上传失败...(image-8d0d39-1661870490354)]
5.2 本地navicat连接
本地通过navicat连接,会报如下错,原因是客户端不支持caching_sha2_password的密码加密方式。那么,我们修改用户密码加密方式为经典方式。
[图片上传失败...(image-fb75e0-1661870490354)]
5.2.1 修改密码加密方式
> mysql -u root -proot;
> use mysql;
> select user, host, plugin, authentication_string from user\G;
> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
[图片上传失败...(image-c8d285-1661870490354)]
5.2.2 再次登录
[图片上传失败...(image-317b50-1661870490354)]
6.扩展篇
6.1 数据丢失测试
测试步骤
创建数据库,创建用户表,插入数据,关闭数据库,在次启动查看数据是否存在
6.1.1 创建测试数据
create database test;
use test;
create table user(
id int,
age int,
username varchar(20)
)
insert into user values(1,18,'张三');
[图片上传失败...(image-b5efa0-1661870490354)]
6.1.2 关闭数据库
0a83ebe4baae为容器id,通过docker ps查询
[图片上传失败...(image-76f0dd-1661870490354)]
docker stop 0a83ebe4baae
查看容器是否启动
可以看到已经停止
[图片上传失败...(image-b7a31a-1661870490354)]
6.1.3 再次启动
docker restart mysql
[图片上传失败...(image-16938f-1661870490354)]
6.1.4 查看数据
执行如下命令可以看到数据依然存在,没有丢失
docker exec -it 0a83ebe4baae /bin/bash
mysql -uroot -proot;
show databases;
use test;
select * from user
[图片上传失败...(image-c11f2c-1661870490354)]
6.2 图形化方式管理容器
下载链接:https://www.docker.com/products/docker-desktop/
如果嫌命令行比较麻烦,可以通过docker desktop来管理,也是比较方便,可以看到提供了重启,删除,暂停等按钮
[图片上传失败...(image-f6428a-1661870490354)]
也可以点击容器,快速进入里面进行命令行
[图片上传失败...(image-ea0dc3-1661870490354)]