安装
- 启动docker
systemctl start docker
//开机自启
systemctl enable docker
-
查看MySQL镜像
docker search mysql
-
拉取 MySQL 镜像
# 下载最新版本
docker pull mysql:latest
- 查看已安装镜像
docker images
- 启动mysql镜像
docker run -itd --name mysql01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
–name:给容器命名,此处命名为mysql01
-p: 表示容器内部端口和服务器端口映射关联。前面的数字
是映射的端口,后面的数字是真实的端口。代表把容器的 3306
端口映射到虚拟机的 3306 端口,外部主机(真实主机)可以直接通过宿主机(虚拟机)ip和3306端口 访问到 (虚拟机上的)MySQL 的服务。
-e:配置信息,此处配置mysql的root用户的登陆密码
MYSQL_ROOT_PASSWORD=123456
设置 MySQL 服务 root 用户的密码
-d:成功启动容器后输出容器的完整ID
结尾的mysql:表示从docker镜像mysql启动一个容器
- 登录MySQL
# 通过container name
docker exec -it mysql01 mysql -uroot -p
# 或通过container id登录
docker exec -it b1dc67fb54c6 mysql -uroot -p
图形化界面连接
尝试使用navicat连接,可能的报错
该错误的原因是在MySQL8之前版本中加密规则mysql_native_password,而在MySQL8以后的加密规则为caching_sha2_password。解决此问题有两种方法,一种是更新navicat驱动来解决此问题,一种是将mysql用户登录的加密规则修改为mysql_native_password。此处采用第二种方式。
//设置密码永不过期,把password换成自己的mysql的用户的密码(这里是root)
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
//修改**root用户**加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码 ,'password'是你的密码
//刷新权限(可选)
FLUSH PRIVILEGES;
root用户%默认是可以远程登录的SSH
创建能远程登录的用户
create user 'sqlUsr1' identified with mysql_native_password by '123456';
grant all privileges on *.* to 'sqlUsr1';
navicat设置
完成连接
MySQL启动与关闭
# 查看所有容器
docker ps -a
# 查看当前运行容器
docker ps
通过container id或者container name打开/关闭容器
# 启动容器
docker start b1dc67fb54c6 # docker start mysql01
# 停止容器
docker stop b1dc67fb54c6 # docker stop mysql01