Bootstrap

docker 安装mysql8.4.0

1、拉取mysql8.4.0镜像

docker pullmysql:8.4.0-oraclelinux8

查看镜像

docker images

在这里插入图片描述

2、新建宿主机本地目录:用来挂载MySQL容器所产生的数据的目录

mkdir -p /home/admin/data/mysql /home/admin/logs/mysql /home/admin/conf/mysql

在这里插入图片描述

3、在/home/admin/conf/mysql目录下面创建mysql配置文件my.cnf

[client]
#port=3306
default-character-set=utf8mb4
 
[mysql]
default-character-set=utf8mb4
 
[mysqld]
port=3306
#设置mysql的安装目录
#basedir=/home/admin/app/mysql-8.4.0
#设置mysql数据库的数据的存放目录
#datadir=/home/admin/data/mysql/data
#错误日志目录
#log-error=/home/admin/data/mysql/logs/error.log
#socket=/home/admin/data/mysql/tmp/mysql.sock
#pid-file=/home/admin/data/mysql/tmp/mysql.pid
init_connect='SET collation_connection = utf8mb4_unicode_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
#skip-character-set-client-handshake
skip-name-resolve
# 设置不区分大小写
lower_case_table_names=1
 
# 创建数据表时,默认使用的存储引擎
default-storage-engine=INNODB
# 附加的内存池,用来存储 InnoDB 表的内容
#innodb_additional_mem_pool_size=3M
# 置提交日志的时机,若设置为 1,InnoDB 会在每次提交后将事务日志写到磁盘上
innodb_flush_log_at_trx_commit=1
# 来存储日志数据的缓存区的大小
innodb_log_buffer_size=2M
# 缓存的大小,InnoDB 使用一个缓冲池类保存索引和原始数据
innodb_buffer_pool_size=107M
# 日志文件的大小
innodb_log_file_size=54M
# 在 InnoDB 存储引擎允许的线程最大数
innodb_thread_concurrency=18
 
# 默认使用“mysql_native_password”插件认证 ON开启/OFF关闭
# mysql_native_passwordmysql_native_password=ON
 
 
# 回收空闲连接的时间
wait_timeout = 86400
# 允许同时访问 MySQL 服务器的最大连接数。其中一个连接是保留的,留给管理员专用的
max_connections=100
# 数据库 写入的 数据包 最大值
max_allowed_packet = 512M
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
 
# 查询时的缓存大小,缓存中可以存储以前通过 SELECT 语句查询过的信息,再次查询时就可以直接从缓存中拿出信息,可以改善查询效率
#query_cache_size=0
# 所有进程打开表的总数
#table_cache=256
# 内存中每个临时表允许的最大大小
tmp_table_size=35M
# 缓存的最大线程数
thread_cache_size=8
# MySQL 重建索引时所允许的最大临时文件的大小
myisam_max_sort_file_size=100G
# 重建索引时的缓存大小
myisam_sort_buffer_size=69M
# 关键词的缓存大小
key_buffer_size=55M
# MyISAM 表全表扫描的缓存大小
read_buffer_size=64K
#将排序好的数据存入该缓存中
read_rnd_buffer_size=256K
#用于排序的缓存大小
sort_buffer_size=256K
 
#开启binlog日志
#当前为单个节点,随机设置一个ID的值
server-id=1
log-bin=mysql-bin
binlog-format=Row

# 解决导入脚本时function报错问题
log_bin_trust_function_creators=1

# 日志存储天数
#expire_logs_days=7 弃用
#binlog用于控制日志自动清理机制 ON 打卡 OFF关闭
#binlog_expire_logs_auto_purge=ON
#binlog可以以秒为单位进行清理 3天
#binlog_expire_logs_seconds=259200


说明:
docker安装需要注释掉下面这些内容

#设置mysql的安装目录
#basedir=/home/admin/app/mysql-8.4.0
#设置mysql数据库的数据的存放目录
#datadir=/home/admin/data/mysql/data
#错误日志目录
#log-error=/home/admin/data/mysql/logs/error.log
#socket=/home/admin/data/mysql/tmp/mysql.sock
#pid-file=/home/admin/data/mysql/tmp/mysql.pid

4、启动容器,创建MySQL实例

docker run -p 3306:3306 --name mysql8.4.0 --restart=always --privileged=true \
 -v /home/admin/logs/mysql:/var/log/mysql \
 -v /home/admin/data/mysql:/var/lib/mysql \
 -v /home/admin/conf/mysq:/etc/mysql/conf.d \
 -v /etc/localtime:/etc/localtime:ro \
 -e MYSQL_ROOT_PASSWORD=123456 \
 -d mysql:8.4.0-oraclelinux8

参数说明:
\ :这是换行符
-d :后台运行
-p 3306:3306 :设置端口,前面端口是主机端口号,后面是容器端口
--privileged=true : 设置容器的权限。让容器拥有宿主机的root权限
-v /home/admin/data/mysql : 容器卷挂载(格式:-v 要挂载的主机路径:要被挂载的容器路径)
-e MYSQL_ROOT_PASSWORD=123456 :设置MySQL的root密码,这里我设置的密码是123456
--name mysql8.4.0 :给要创建的容器起个名,不起名的话就会默认生成一个名字,不好记
mysql:8.4.0-oraclelinux8 :要运行的镜像(可以用镜像名:版本号来指定也可以用镜像id

使用docker ps 查看容器
在这里插入图片描述
查看mysql日志

docker logs 容器id或者容器名称

例如:

docker logs mysql8.4.0
docker logs ae5b3444d5d9
;