一、镜像拉取
docker pull mysql:latest
二、安装
docker run -d --name temporary_mysql -e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" mysql -- 创建临时容器
docker cp temporary_mysql:/etc/mysql/. /data/mysql/conf -- 将配置文件copy到磁盘
docker rm -f temporary_mysql -- 删除临时容器
docker run -d \
--name mysql \
--restart=always \
-p 3306:3306 \
-v /etc/localtime:/etc/localtime:ro \
-v /data/mysql/conf:/etc/mysql \ -- 映射配置
-v /data/mysql/logs:/var/log/mysql \ -- 映射日志
-v /data/mysql/data:/var/lib/mysql \ -- 映射数据
-v /data/mysql/mysql-files:/var/lib/mysql-files \ -- 映射文件目录
-e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" \ -- 先设置空密码 为了简化设置,先设置空密码,下边再进行修改
mysql
三、密码设置/连接访问
docker exec -it mysql /bin/bash -- 进入mysql容器,也可以使用 Portainer
mysql -u root -- 在容器内登录mysql数据库,创建时未指定密码,所以不需要填写密码
# 切换到mysql数据库
use mysql;
select host,user from user; # 查询主机及用户
# 当不存在'root'@'%'用户时
update user set host = '%' where user = 'root'; # %表示允许root被所有IP访问
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'XXXXXXXXXXXXXXXXXXXXXXX' PASSWORD EXPIRE NEVER; # 设置密码并永不过期 【XXXXXXXXXXXXXXXXXXXXXXX】设置密码处
flush privileges; -- 使修改立即生效
客户端使用账号密码尝试连接数据库验证是否安装成功