Docker 下安装mysql
2019-05-07 本文已影响0人
你笑时很美丶
1.查看docker仓库中mysql的最新版 https://hub.docker.com/_/mysql
- 或者在linux中直接搜索[图2]:
#docker search
docker search mysql
图2
2.下载镜像(因为我已经安装了就不贴图了)
#docker pull 下载命令
docker pull mysql:8.0.16
3.查看是否下载成功
docker images |grep mysql
图3
4.创建目录mysql,用于存放后面的相关东西
#这里路径自行修改
mkdir -p /project/docker/mysql/logs /project/docker/mysql/conf /project/docker/mysql/data
- data目录将映射为mysql容器配置的数据文件存放路径
- logs目录将映射为mysql容器的日志目录
- conf目录里的配置文件将映射为mysql容器的配置文件
5.启动mysql镜像
docker run -p 3306:3306 --restart=always -v /project/docker/mysql/conf:/etc/mysql/conf.d -v /project/docker/mysql/logs:/var/log/mysql -v /project/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql -d mysql:8.0.16
- --name: 以啥名字启动容器
- -d mysql:需要启动的容器的名称
- -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
- -v /project/docker/mysql/conf:/etc/mysql/conf.d:将主机当前目录下的 /project/docker/mysql/conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
- /project/docker/mysql/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
- /project/docker/mysql/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql
- -e MYSQL_ROOT_PASSWORD=12345:初始化mysql密码
6.查看镜像是否启动成功
docker ps
#进入mysql镜像
docker exec -it mysql bash
#进入mysql
mysql -uroot -p123456
#停止镜像 name/id
docker stop id
#启动镜像 name/id
docker start name/id
图6
- 若安装成功也连接不上:
- 开放阿里云端口(在安全组中添加3306)
- 开放防火墙端口
#检查防火墙端口
netstat -apn|grep 3306
#若3306被占用请删除镜像重新run一个端口
#开启3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#在不改变状态的条件下重新加载防火墙
firewall-cmd --reload
- 设置mysql权限,root允许被任意IP地址访问
update mysql.user set host = '%' where user = 'root';
#GRANT ALL ON *.* TO 'root'@'%';
#若仍然不行
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root123456';
#刷新权限
flush privileges;
#'root'@'%' 中的root为用户名,'%'为user表host字段的值,'root123456'为用户密码