docker 安装运行mysql8.4.4

先前一直使用mysql5.7,最新公司新项目,无意翻阅看下5.x版本mysql官方已经不再支持,于是准备选用MySQL8,官方8.4版本是个长期支持版本,选则最新版本8.4.4,如下是MySQL官方对版本支持计划

MySQL版本下载查看地址:https://dev.mysql.com/downloads/mysql/

本文基于docker安装,docker版本如下,配置文件抽象出来,数据、日志输出到服务器上

[root@uat-gateway-001 logs]# docker --version
Docker version 26.1.4, build 5650f9b

如下为详细安装步骤 

mysql
docker pull mysql:8.4.4启动mysql8,目的提取配置文件到容器外
docker run -p 13308:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=ybwCloud@123 -d mysql:8.4.4#拷贝mysql配置文件到本地
docker cp mysql8:/etc/mysql /etc/docker/mysql8/config
#拷贝mysql配置文件数据源到本地
docker cp mysql8:/var/lib/mysql /etc/docker/mysql8/data
#在本地创建logs日志存储文件
#创建错误日志存放文件
mkdir -p /etc/docker/mysql8/logs/error/
touch /etc/docker/mysql8/logs/error/error_log.log#不建议改
#创建查询日志存放地址  原地址/var/lib/mysql/9056323b388c.log 最好复制源文件否则有权限问题
#在外部加了mysql权限没成功,直接在运行容器时加了--privilged  也没成功
mkdir -p /etc/docker/mysql8/logs/general/
touch /etc/docker/mysql8/logs/general/mysql_general.log
#创建慢查询日志存放文件 原本存在/var/lib/mysql/9056323b388c-slow.log 最好复制源文件否则有问题
mkdir -p /etc/docker/mysql8/logs/show_query/
touch /etc/docker/mysql8/logs/show_query/show_query.log
#给日志赋权限
chmod 777 /etc/docker/mysql8/logs/error/error_log.log
chmod 777 /etc/docker/mysql8/logs/general/mysql_general.log
chmod 777 /etc/docker/mysql8/logs/show_query/show_query.log#chmod -R 777 /etc/docker/mysql8/logs/配置MYsql参数
vim /etc/docker/mysql8/config/my.cnf移除原始启动容器
docker rm -f mysql8

mysql的配置文件需要抽象出来方便后续调整,否则重启容器后配置丢失需要重新处理

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /etc/docker/mysql8/data
secure-file-priv= NULL#管理多因素身份认证功能
#authentication_policy=caching_sha2_password#server级别字符集,服务器安装时指定的默认编码格式,不要人为定义,让系统自己定义
character-set-server = utf8mb4
#设置字段编码
collation-server = utf8mb4_general_ci
#设置初始化连接编码SET NAMES utf8mb4
init_connect='SET NAMES utf8mb4'#不区分数据大小写
lower_case_table_names = 1
#innodb使用后台线程处理数据页的读取IO(输入输出请求),根据cpu核数来更改默认是4
innodb_read_io_threads = 4
#数据库落盘脏页个数
innodb_io_capacity = 400#定义innodb存储引擎的表数据和索引数据的最大内存缓冲区,看机器内存情况定
innodb_buffer_pool_size = 2G
#每个日志文件的大小,综合大小到缓冲池大小的5%~100%,避免日志覆写上不必要的缓冲池刷新行为。注意一个大的日志文件大小会增加恢复进程所需要的时间
#废弃innodb_log_file_size = 128M
innodb_redo_log_capacity = 128M
#独立表空间模式,每个数据库的没表表都会生成一个数据空间
innodb_file_per_table = 1#设置innodb线程的并发数
innodb_thread_concurrency=4#innodb存储引擎下 Buffer Pool缓存大小,一般为物理内存的60%-70%存的60%-70%
innodb_buffer_pool_size=2G#innodb存储引擎下,行锁锁定时间
innodb_lock_wait_timeout=10#每次事务提交的时候会把log buffer刷到文件系统中去,但并不会立即刷写到磁盘。如果只是MySQL数据库挂掉了,由于文件系统没有问题数据不会丢失,减少由事务日志引起的磁盘 I/O
innodb_flush_log_at_trx_commit = 2#索引缓冲区大小
key_buffer_size = 512M#禁用 local-infile选项
local-infile = on#指定链接空闲多长时间断开
lock_wait_timeout = 3600#链接十次数据库服务不正常,会锁住IP安全设置
max_connect_errors = 10#表描述符的缓存大小
table_open_cache = 20000#数据字典缓存中打开的表数量软限制
table_definition_cache = 2000#每个线程的内存大小
thread_stack = 512k#每个需要排序的线程分配该大小的一个缓冲空间。增加该值可以加速ORDER BY或GROUP BY操作。不宜过大,占内存
sort_buffer_size = 2M#用于表关联缓存空间(缓存块嵌套循环连接) 可以避免多次的内表扫描,从而提高性能
join_buffer_size=2M#线程池缓存大小
thread_cache_size = 256#关闭一个交互链接之前所需要等待的时间秒
interactive_timeout = 600
#关闭一个非交互链接之前所需要等待的时间秒
wait_timeout = 600#最大进程连接数
max_connections = 6000
#用户的最大链接数量,剩余链接数用于DBA管理
max_user_connections = 5800
# 暂存的等待的链接数量
back_log = 1024#默认存储引擎 5.5以上默认就是InnoDB
default-storage-engine=InnoDB#临时表的内存缓存大小
tmp_table_size = 32M#临时表的最大值
max_heap_table_size = 512M#log settings 错误日志存放地址
log_error = /var/log/mysql/error/mysql-error.log
#通用查询日志是否开启 默认关闭 OFF关闭 ON开启
general_log=OFF
#查询日志地址
general_log_file = /var/log/mysql/query/mysql_general.log#开启二进制日志 正常情况必须开启 ON开启 OFF关闭
log-bin=mysql-bin-log
#binlog的日志存放地址
#log_bin_basename=/var/log/mysql/binlog
log_bin = /var/log/mysql/mysql-binlogs/mysql-bin
# mysql binlog日志文件保存的过期时间,过期后自动删除 一般不启用,主从中更加不能启用
#expire_logs_days = 5#显示日志中的时间参数
log_timestamps = SYSTEM#配置时区
default-time_zone = '+8:00'   #密码加密方式
mysql_native_password=ON
#default_authentication_plugin = caching_sha2_password#服务能处理的请求包最大大小
max_allowed_packet = 512M#设置最大包,限制server接受的数据包大小
#slave_max_allowed_packet = 512M
replica_max_allowed_packet = 512M#打开的文件描述符限制
open_files_limit = 65536#标识数据库
server_id = 1
#二进制文件大小
binlog_expire_logs_seconds = 604800#存储整个事务生成的binlog event的内存大小
binlog_cache_size=10480
#二进制非事务语句的缓存大小
binlog_stmt_cache_size=4096#sync_binlog:是MySQL 的二进制日志(binary log)同步到磁盘的频率。当每进行1次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。保证数据不丢失。
sync_binlog = 1#二进制启用后,变量则启用,控制是否可以信任存储函数创建者,1 不会对创建存储函数实施做控制
log_bin_trust_function_creators = 1# 检索的行数必须达到此值才可被记为慢查询
#min_examined_row_limit = 100# 作为从库时生效,从库复制中如何有慢sql也将被记录
#log_slow_slave_statements = 1# Custom config should go here 调用/ect/mysql/conf.d下的配置文件
!includedir /etc/mysql/conf.d/

mysql.cnf是看着别人都有调整,我这里没有对这个文件进行个性化调整配置

#配置mysql.cnf
#vim /usr/local/src/docker/mysql/config/conf.d/mysql.cnf
##############################
[mysql]
prompt = "\\u@\\d \\r:\\m:\\s>"
no_auto_rehash
loose-skip-binary-as-hex
################################
prompt = "\\u@\\d \\r:\\m:\\s>"   #设置命令行工具的提示符 默认为 mysql>
no_auto_rehash                    #命令行工具中的自动命令补全功能
loose-skip-binary-as-hex          #

启动运行容器

docker run -p 3308:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=设置数据库root密码 -e TZ=Asia/Shanghai \
-v /etc/docker/mysql8/config:/etc/mysql \
-v /etc/docker/mysql8/data:/etc/docker/mysql8/data \
-v /etc/docker/mysql8/logs:/var/log/mysql \
--privileged=true --restart=always -d mysql:8.4.4 --lower_case_table_names=1

#说明下,3308为容器外访问端口,3306容器内访问端口,-v 设置环境,冒号前为容器外路径,冒号后为容器内路径,privileged=true为给与最大权限,restart=always 自动启动容器,lower_case_table_names 为0区分大小写 1不区分大小写

#创建库、创建用户、给用户授权库权限  % 表示随处访问,此处可以改为Ip固定Ip访问,localhost本地访问
CREATE USER 'user'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON youDatabase.* TO 'user'@'%';

这里踩雷几处:

1:mysql8和MySQL5.7配置项很多对参数名称进行调整,上述配置文件已调整为mysql8

2:mysql8默认使用的身份认证插件

3:重启容器后,一直报错原因是旧数据和新容器不兼容,后来data目录全部删除,重启解决

4:binlog目录5.7参数名log_bin_basename,8参数名log_bin,上述配置文件已调整可直接使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/84508.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[java八股文][MySQL面试篇]索引

索引是什么?有什么好处? 索引类似于书籍的目录,可以减少扫描的数据量,提高查询效率。 如果查询的时候,没有用到索引就会全表扫描,这时候查询的时间复杂度是On如果用到了索引,那么查询的时候&a…

低代码平台的版本管理深度解析

引言 在当今快速发展的软件开发领域,低代码平台凭借其可视化界面和拖拽功能,极大地减少了手动编码的工作量,显著提高了开发效率和质量。它提供了丰富的预构建模块、组件和服务,让开发者能够根据业务需求和逻辑进行组合与配置&…

Springboot项目由JDK8升级至JDK17全过程教程【文末附源码】

1. 前言 最近一直想把我的开源项目maple-boot升级到jdk17版本,然后接入Spring AI。拖延症犯了一直拖拖拖,最近时间空闲较多,开始陆续着手升级。 整个升级过程 计划分为3步。 step1:先将项目升级到jdk17,使用正常ste…

同步与异步:软件工程中的时空艺术与实践智慧-以蜻蜓hr人才系统举例-优雅草卓伊凡

同步与异步:软件工程中的时空艺术与实践智慧-以蜻蜓hr人才系统举例-优雅草卓伊凡 概念解析:时空维度的编程范式 在软件开发的宇宙中,同步(Synchronous)与异步(Asynchronous)是两种根本不同的执行模式,它们塑造了程序与时间和空间…

TF-IDF算法的代码实践应用——关键词提取、文本分类、信息检索

回顾:TF-IDF算法详解与实践总结 上一篇文章我们深入剖析了TF-IDF的原理与细节,但实践才是检验真理的唯一标准!今天,我们将从“纸上谈兵”转向“实战演练”:通过纯Python手写实现与调用sklearn工具包两种方式&#xff0…

前端面试宝典---事件循环面试题

浏览器进程模型与 JavaScript 执行机制 现代浏览器采用多进程架构,包含浏览器进程、渲染进程、网络进程等多个核心进程。每个标签页会独立创建一个渲染进程,负责页面内容的解析、渲染和执行脚本代码。 JavaScript 的单线程特性 JavaScript 采用单线程…

postman调用接口报错401, Unauthorized, Invalid Token. null解决办法

1、先登录系统,F12找到token并复制 2、postman里选中Authorization,下拉选中选择Bearer Token,把复制好的token黏贴到右侧输入框,如下所示: 3、如果是json格式的参数拷贝到Body中,如下所示: 4、 接口调用成功

C++----剖析list

前面学习了vector和string,接下来剖析stl中的list,在数据库中学习过,list逻辑上是连续的,但是存储中是分散的,这是与vector这种数组类型不同的地方。所以list中的元素设置为一个结构体,将list设计成双向的&…

为什么已经有 Nginx 了,还需要服务网关?

在当前微服务架构中,虽然 Nginx 是一个高性能的反向代理和负载均衡服务器,但在实际使用中仍然存在诸多局限性。为了满足运维效率、功能统一治理以及与微服务生态集成的需求,通常会在 Nginx 和业务服务之间引入一层基于 Java 实现的服务网关&a…

Kendo UI 中,ViewModel、DataSource 和 Grid的关系。Kendo 框架发起 HTTP 请求

Kendo UI 中,ViewModel、DataSource 和 Grid的关系 在 Kendo UI 中,ViewModel、DataSource 和 Grid 是构建动态数据应用的核心组件,三者协同工作实现数据的绑定、管理和展示。 一、三者关系图解 #mermaid-svg-3lWxu2zWB23wDYEz {font-family…

宇树开源 Qmini 双足机器人,可通过 3D 打印动手制作,使用树莓派作为主控制器

Unitree Qmini 是一款由宇树科技设计并开源的低成本双足机器人,开发者可以完全通过 3D 打印进行复刻。Qmini 专为业余爱好者、教育工作者和研究人员设计,使用户能够快速上手,并以类似乐高的模块化方式组装自己的机器人。该项目为机器人技术提…

解决华为云服务器无法ping通github问题

在push代码到github上的时候,发现显示22端口无法连接,在已经开放了端口,防火墙关闭的情况下仍然无法连接到GitHub。 发现是服务器和github断连,选择 sudo vim /etc/hosts 添加一下代码 # GitHub Start140.82.121.4 gith…

关于electron-vite koffi 读取 dll 打包等问题得记录

koffi const koffi require(‘koffi’) import iconv from ‘iconv-lite’;const libPath path.resolve(__dirname, ‘…/…/resources/dll/sss.dll’) const yktLib koffi.load(libPath) const ret yktLib.func(‘string sss(string Url, string Data, string OutData)’…

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…

通过关键字批量抓取淘宝商品数据实现方法途径分享--API

item_search 按关键字搜索淘宝商品item_search_tmall 按关键字搜索天猫商品item_search_pro 高级关键字搜索淘宝商品item_search_img 按图搜索淘宝商品(拍立淘)item_search_shop 获得店铺的所有商品 一、引言 在电商领域,获取淘宝商品数据对…

用 Lazarus IDE 写一个邮件客户端软件,能收发邮件,编写邮件

下面是一个使用Lazarus IDE开发的基本邮件客户端实现方案,包含收发邮件和编写邮件的核心功能。我们将使用Synapse库(跨平台的网络通信库)来处理邮件协议。 步骤1:安装依赖 安装Synapse库: 下载地址:https:…

第二部分-IP及子网划分

目录 一、什么是IP? 1.1.IP地址的由来 1.2.IP地址的表示 1.3.IP地址的构成 1.4.IP地址的分类 1.5.IP地址类型 1.6.IP地址的计算 1.7.私网IP地址 1.8.特殊IP地址 二、子网划分 2.1.什么是子网划分及为什么要进行子网划分? 2.2.如何进行子网划分? 实例: …

【javascript】泡泡龙游戏中反弹和查找匹配算法

引言 泡泡龙游戏的核心玩法依赖于物理碰撞与颜色匹配的算法实现。反弹效果需要模拟泡泡与边界或障碍物的弹性碰撞,确保轨迹符合物理规律;匹配算法则需快速检测相邻同色泡泡,触发消除逻辑。高效的处理方式直接影响游戏流畅度和玩家体验。 以…

如何使用deepseek满血版

deepseek 访问方式 DeepSeek满血版可通过官方网站或官方应用商店下载安装。确保设备满足最低系统要求,如操作系统版本和硬件配置。 账号注册与登录 访问平台后完成账号注册流程,提供必要信息并验证邮箱或手机号。登录后进入用户中心,查看…

网络管理【Linux/Unix/Windows】命令大全

在跨平台网络运维中,管理员常需快速切换Windows与Linux环境下的命令操作。本文整合了核心网络管理命令的跨平台对照表,涵盖连通性测试、路由追踪、DNS解析、ARP管理、会话监控等高频场景。无论您负责服务器维护、网络排障还是安全审计,此表可…