docker部署mysql : 8.0
1.在宿主机创建mysql挂载目录
#创建目录 mkdir /home/mysql/conf mkdir /home/mysql/logs mkdir /home/mysql/data
2.docker拉取MySQL镜像
docker pull mysql:latest
3.创建mysql容器
docker run --name mysql -p 3308:3306 -v /home/mysql/conf:/etc/mysql -v /home/mysql/logs:/logs -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
参数解释:
- --name 容器名字
- -p 3308:3306 物理机端口:容器内部端口
- -e 运行参数 初始化 root 用户的密码
- -d 后台运行 mysql/mysql-server:5.5 下载的镜像名字加标签
- -v /home/mysql/conf:/etc/mysql:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。//配置文件目录
- -v /home/mysql/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。//日志目录
- -v /home/mysql/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。//数据库文件存放目录
4.进入容器内部
docker exec -it mysql bash
5.进入mysql
mysql –u root –p
6.修改远程连接
#指定数据库
use mysql;
#查看用户连接范围
select user, host form user;
#修改mysql允许远程连接 update user set host='%' where user='root';
#刷新 flush privileges;
7.设置Navicat连接
mysql8.0使用Navicat连接会报错:Client does not support authentication protocol requested by server;consider upgrading MySQL client.
解决方法:
#使用mysql命令修改配置 alter user 'root' IDENTIFIED WITH mysql_native_password by 'Navicat密码'; #刷新 flush privileges;
8.本机连接方式
# 本机连接容器内的数据库,(我们将容器内的3306端口映射到了本机的3308,所以我们通过3308端口访问) mysql -u root -p -h 127.0.0.1 -P 3308