mysql8 docker镜像源_Docker 官方mysql8.0镜像使用-(包括5.7版本)-Go语言中文社区

本文详细介绍了如何使用Docker部署MySQL8.0,步骤同样适用于5.7版本。内容包括拉取镜像、创建持久化目录、设置my.cnf配置文件、创建数据卷容器、启动容器并设置自动执行初始化SQL。重点解决了远程连接问题和数据卷的挂载,确保了MySQL在容器内的正常运行和数据的持久化。
摘要由CSDN通过智能技术生成

docker mysql8.0使用方法(同样适用于5.7版本)

拉去mysql最新8.0镜像

docker pull mysql

创建持久化目录

mkdir -p /app/data/mysql/{conf,db,mysql_init_data}

#mysql_init_data为初始化数据目录。导入sql在启动容器时会自动执行。

设置my.cnf配置文件

#default_authentication_plugin=mysql_native_password 设置mysql密码认证方式-解决远程连接问题

#mmysql8 之前的版本中加密规则是mysql_native_password,mysql8之,加密规则是caching_sha2_password,而现在大多数客户端只支持mysql_native_password认证方式。所以还原认证为mysql_native_password即可解决。

cat >/app/data/mysql/conf/my.cnf<

[mysqld]

user=mysql

character-set-server=utf8

default_authentication_plugin=mysql_native_password

max_connections=3000

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

EOF

创建数据卷容器

docker run -v=/app/data/mysql/conf/my.cnf:/etc/my.cnf -v=/app/data/mysql/db:/var/lib/mysql --name web_data centos

#docker run -p 3306:3306 -v=/app/data/mysql/conf/my.cnf:/etc/my.cnf -v=/app/data/mysql/db:/var/lib/mysql --restart always --privileged=true --name mysql-test -e MYSQL_USER="wyl" -e MYSQL_PASSWORD="wylpwd123456" -e MYSQL_ROOT_PASSWORD="rootpwd123456" mysql

启动容器:

docker run -d -p 3306:3306 -d --volumes-from web_data --restart always --privileged=true --name mysql-test -e MYSQL_USER="wyl" -e MYSQL_PASSWORD="wylpwd123456" -e MYSQL_ROOT_PASSWORD="rootpwd123456" mysql

#同样适用于mysql5.7#docker run -d -p 3306:3306  --volumes-from web_data  --restart always  --privileged=true --name mysql-test -e MYSQL_USER="wyl"  -e MYSQL_PASSWORD="wylpwd123456"  -e MYSQL_ROOT_PASSWORD="rootpwd123456" mysql:5.7.17

本地连接测:

mysql -uroot -prootpwd123456 -h127.0.0.1

参数说明:

-e MYSQL_USER="wyl":添加用户

-e MYSQL_PASSWORD="wylpwd123":设置普通用户密码

-e MYSQL_ROOT_PASSWORD=”rootpwd123”:设置root的密码

–character-set-server=utf8:设置字符集为utf8

–collation-server=utf8_general_ci:设置字符比较规则为utf8_general_ci

–restart always:开机启动

–privileged=true:提升容器内权限

-v=/mysqltest/config/my.cnf:/etc/my.cnf:映射配置文件

-v=/mysqltest/data:/var/lib/mysql:映射数据目录

3558ae412fdec507afdb8713e14802fd.png

启动容器自动执行sql-记录

mysql官方dockerfile中的entrypoint.sh脚本已经实现了此功能。dockerfile:https://github.com/docker-library/mysql/blob/master/5.7/Dockerfile

docker-entrypoint.sh:https://github.com/docker-library/mysql/blob/master/5.7/docker-entrypoint.sh

dbb1d63b90b4d287457110228fa5c684.png

38a189216c3746701791e99fe19e30fc.png

entrypoint.sh脚本命令会遍历/docker-entrypoint-initdb.d/文件中的sh文件,sql文件,sql.gz压缩包,随后按照sh>sql>sql.gz的顺序依次执行。当有多个sql文件时,sql执行顺序问题可以通过shell脚本控制实现,这里不再赘述。

也就是说实现以上功能需要我们本地创建:初始化sql目录,将我们需要初始化的sql移动到该目录下并在创建容器时挂在此目录到/docker-entrypoint-initdb.d/下即可。实现创建容器自动执行sql的目的。

创建初始化数据目录

mkdir -p /app/data/mysql/mysql_init_data

创建初始化表

cat /app/data/mysql/mysql_init_data/init.sql

#创建数据库

DROP database IF EXISTS `wyl_database`;

create database `wyl_database` default character set utf8 collate utf8_general_ci;

#切换到test_data数据库

use wyl_database;

#创建建表

DROP TABLE IF EXISTS `person`;

CREATE TABLE `user` (

`id` bigint(20) NOT NULL,

`name` varchar(255) DEFAULT NULL,

`age` bigint(20) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

#插入数据插

INSERT INTO `user` (`id`,`name`,`age` ) VALUES    (0,'wangyunlong',18);

创建容器数据卷

docker run -v=/app/data/mysql/conf/my.cnf:/etc/my.cnf -v=/app/data/mysql/db:/var/lib/mysql --name web_data centos

启动mysql容器

docker run -d -p 3306:3306 --volumes-from web_data -v /app/data/mysql/mysql_init_data:/docker-entrypoint-initdb.d --restart always --privileged=true --name mysql-test -e MYSQL_USER="wyl" -e MYSQL_PASSWORD="wylpwd123456" -e MYSQL_ROOT_PASSWORD="rootpwd123456" mysql:5.7.17

查看数据已经被创建

18b7a8a81be55a0254fb97adc77fd3c5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值