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

Docker 官方mysql8.0镜像使用-(包括5.7版本)


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<<EOF
[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:映射数据目录

43d41895da62be172cfe8215733d3e6f103.jpg

启动容器自动执行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

7420cc329eb79975a8cdd6514a49a2ca299.jpg

14676f29166cbb51b49cd5209f07c645b91.jpg

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

查看数据已经被创建

8ec47bee2386da361d576d30ce7d7da29b2.jpg

转载于:https://my.oschina.net/wangyunlong/blog/3037705

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_34279061/article/details/92600760
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-05-07 23:27:32
  • 阅读 ( 1823 )
  • 分类:数据库

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢