目录
- 镜像获取
- 创建容器
- 远程连接
镜像获取
使用 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,连接成功
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于