Docker安装MySQL5.7和8

Docker安装部署MySQL

记录了一些我之前使用docker安装部署mysql5.7和8两种版本数据库的过程,并汇总了配置使用Navicat连接的过程,在部署开发环境时,使用Docker还是非常方便的。

安装Mysql5.7

镜像安装运行
# 拉取镜像
docker pull mysql:5.7
# 启动镜像
docker run --name mysql-57 -p 3406:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker run --net=host --restart=always --privileged=true -v /usr/docker_dat/mysql/data:/var/lib/mysql --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -v /etc/localtime:/etc/localtime:ro -d mysql --lower_case_table_names=1

# --restart=always 跟随docker启动
# --privileged=true 容器root用户享有主机root用户权限
# -v 映射主机路径到容器
# -e MYSQL_ROOT_PASSWORD=root 设置root用户密码
# -d 后台启动
# --lower_case_table_names=1 设置表名参数名等忽略大小写
配置mysql
# 进入镜像环境
docker exec -it mysql-57 /bin/bash
# 登录mysql
mysql -u root -p
use mysql;
# 创建账号
CREATE USER'admin'@'%' IDENTIFIED BY '123456';
# 授予访问权限
grant all PRIVILEGES on *.* to admin@'%' identified by '123456';
flush privileges;
# mysql5.7修改密码
update user set authentication_string=password('xxxxx*') where user='root' and Host='*';
# mysql5.5修改密码
UPDATE USER SET PASSWORD=PASSWORD('xxxxx*') WHERE USER='root';

打包成镜像
docker commit afcaf46e8305 centos-vim
docker images | grep centos-vim
docker inspect centos-vim:afcaf46e8305
docker run -it centos-vim /bin/bash

# 将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明信息。
docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1
# -a :提交的镜像作者;
# -c :使用Dockerfile指令来创建镜像;
# -m :提交时的说明文字;
# -p :在commit时,将容器暂停。

安装Mysql8

镜像安装运行
# 拉取镜像
docker pull mysql
# docker pull mysql:8.0
# 启动镜像
# docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD={your passwd} -d mysql
docker run --name mysql-latest -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql
配置mysql
# 进入镜像环境
docker exec -it mysql /bin/bash
# 登录mysql
mysql -uroot -p{your password}
use mysql
# 切换mysql8的密码策略
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456*';
alter user 'root'@'%' identified by '123456';
flush privileges;

# 创建账号
CREATE USER 'admin'@'%' IDENTIFIED BY '123456';
# 授予所有权限
grant all on *.* to 'admin'@'%';
flush PRIVILEGES; 
# 因为mysql8.0改变了加密方式,使用下面的命令即可解决问题
ALTER USER 'admin'@'%' IDENTIFIED BY 'admin1988*' PASSWORD EXPIRE NEVER;
ALTER USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'admin1988*'; 
flush privileges;

你可能感兴趣的:(Linux)