目录
- 镜像获取
- 创建容器
- 远程连接
镜像获取
使用 docker 命令下载最新版的MySQL镜像,docker 的安装和使用可以查看《Docker 系列之 Docker 简单介绍与安装》和《Docker 系列之 Docker 常用命令》
docker pull mysql #未指定镜像版本默认下载最新版
或者到docker仓库查看MySQL镜像的版本,选择自己需要的版本下载
创建容器
使用 docker image ls
查看下载的镜像列表
创建MySQL容器并运行
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=test_db -e MYSQL_USER=user -e MYSQL_PASSWORD=password -v /usr/docker/mysql/conf:/etc/mysql.conf.d -v /usr/docker/mysql/logs:/logs -v /usr/docker/mysql/data:/var/lib/mysql -d mysql:latest
命令说明
* --name mysql #容器的名称
* -p 3306:3306 #将容器的3306端口映射到主机的3306端口。
* -e MYSQL_ROOT_PASSWORD=password #初始化root用户的密码。
* -e MYSQL_DATABASE=test_db #可选,创建名为test_db的数据库
* -e MYSQL_USER=user #可选,创建拥有test_db所有权限的user用户
* -e MYSQL_PASSWORD=password #可选,设置user用户的密码
* -v /usr/docker/mysql/conf:/etc/mysql/conf.d #挂载容器中mysql的配置文件夹至主机的conf文件夹
* -v /usr/docker/mysql/logs:/logs #挂载容器中mysql的日志文件夹至主机的logs文件夹
* -v /usr/docker/mysql/data:/var/lib/mysql #挂载容器中mysql的数据文件夹至主机的data文件夹
* -d mysql:latest #镜像ID或者Repository:Tag,查看上图
容器列表
在容器列表中可以看到刚刚运行的mysql容器以及其它正在运行的容器
docker ps
远程连接
使用user用户连接MySQL,MYSQL_USER
创建的用户默认拥有远程连接权限
错误
连接MySQL时提示2059错误
原因
MySQL 8之前的版本中加密规则是 mysql_native_password
,而在MySQL 8之后,加密规则改为了 caching_sha2_password
解决
更改MySQL的加密规则,首先docker命令进入容器内部
docker exec -it mysql /bin/bash
接着使用 root
用户登录MySQL,输入创建容器时 MYSQL_ROOT_PASSWORD
设置的登录密码
mysql -u root -p #登录
登录成功后执行以下操作
use mysql; #选择数据库
ALTER USER 'user'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #更改加密方式,其中的'password'为需要设置的密码
ALTER USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #更新用户密码
FLUSH PRIVILEGES; #刷新权限
完成以上操作后再次使用Navicat远程连接MySQL,连接成功