目之瞬间-专注于互联网平台

docker 安装mysql

拉起MySQL镜像(:5.7 表示5.7版本)

docker pull mysql:5.7

 

 

启动一个mysql容器用于复制配置文件

docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123  mysql:5.7

 

//这里为了查看配置文件存放路径
docker exec -it mysql bash
mysql -uroot -p
//show variables like '%datadir%';会输出数据文件的存放路径 /var/lib/mysql/
show variables like '%datadir%';
//拷贝容器配置文件,配置文件存在 /etc/mysql
docker cp mysql:/etc/mysql /etc/docker
//拷贝my.cnf文件
 docker cp mysql:/etc/mysql/my.cnf /etc/docker/mysql/conf
//复制完成删除容器,先停才能删除
docker stop mysql
docker rm mysql

image (1).png

修改my.cnf文件

[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

 

准备工作完成 开始配置正式容器

 

docker run -d -p 3306:3360 --restart always -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD="ztan123456"  -e MYSQL_USER="ztan" -e MYSQL_PASSWORD="ztan123456"  -v /etc/docker/mysql/conf/my.cnf:/etc/my.cnf  -v /etc/docker/mysql/data:/var/lib/mysql   --name mysql01 mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci

参数说明:

  • run run 是运行一个容器

  • -d表示后台运行

  • -p表示容器内部端口和服务器端口映射关联

  • --restart always开机启动

  • -e TZ=Asia/Shanghai设置时区

  • -v /etc/docker/mysql/conf/my.cnf:/etc/my.cnf挂载my.cnf配置

  • -v /etc/docker/mysql/data:/var/lib/mysql挂载映射数据库的数据目录, 避免以后docker删除重新运行MySQL容器时数据丢失

  • -e MYSQL_ROOT_PASSWORD=123456 设置MySQL数据库root用户的密码 必须属性

  • -e MYSQL_USER="ztan" -e MYSQL_PASSWORD="ztan123456" 设置一个新用户及密码

  • --name mysql 设值容器名称为mysql

  • mysql:5.7表示从docker镜像mysql:5.7中启动一个容器

  • --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci 设值数据库默认编码

 

该命 Docker 容器内运行命令docke exec 提供mysql容器内的 bash shell :

docker exec -it mysql01 bash
//进入mysql
msyql -uroot -p
//授权
GRANT ALL ON *.* TO 'root'@'%';
//刷新权限
flush privileges;
//更新加密规则 可设置弱智密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
//更新密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

 

 

该日志可通过 Docker 的容器日志获得:

docker logs mysql01