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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Docker上安装MySQL 5.7,可以使用以下命令创建容器: docker run --privileged=true -p 3306:3306 --name mysql -v /docker/mysql/conf:/etc/mysql/conf.d -v /docker/mysql/logs:/var/log/mysql -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=223345 -d mysql:5.7 该命令将创建一个名为mysql的容器,并将主机的3306端口映射到容器的3306端口。配置文件、日志文件和数据文件将在主机上的/docker/mysql目录中进行持久化存储。容器将使用MySQL 5.7镜像,并设置root用户的密码为223345。 要在Docker上安装MySQL 8.0,可以使用以下命令创建容器: docker run --privileged=true -p 3307:3306 --name mysql8 -v /docker/mysql8/conf:/etc/mysql/conf.d -v /docker/mysql8/logs:/var/log/mysql -v /docker/mysql8/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=223345 -d mysql:8.0 该命令将创建一个名为mysql8的容器,并将主机的3307端口映射到容器的3306端口。配置文件、日志文件和数据文件将在主机上的/docker/mysql8目录中进行持久化存储。容器将使用MySQL 8.0镜像,并设置root用户的密码为223345。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [docker安装myql5.7mysql8.0](https://blog.csdn.net/weixin_65349299/article/details/125860971)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [docker安装mysql5.78.0、redis](https://blog.csdn.net/qq_45524787/article/details/126358732)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值