MySQL 服务器简介

通常所说的 MySQL 服务器指的是mysqld程序,当运⾏mysqld后对外提供MySQL 服务,这个专题的内容涵盖了以下关于MySQL 服务器以及相关配置的内容,包括:
  • 服务器⽀持的启动选项。可以在命令⾏和配置⽂件中指定这些选项。
  • 服务器系统变量。反映了启动选项的当前状态和值,其中⼀些变量可以在服务器运⾏时修改。
  • 服务器状态变量。这些变量包含了有关运⾏时操作的计数器和统计信息。
  • 服务器如何管理客⼾端连接。
  • 配置和使⽤时区⽀持。
  • 服务器端帮助功能。

服务器配置和默认值

mysqld 有很多选项和系统变量可以在启动时进⾏配置,要查看服务器的默认选项和系统变量值,可以执⾏以下命令:
mysqld --verbose --help
# 查看所有mysqld 选项和可配置的系统变量列表及默认值
root@hcss-ecs-9734:/var/lib/mysql# mysqld --verbose --help
# 内容看起来像这样
abort-slave-event-count 0
allow-suspicious-udfs FALSE
archive ON
auto-increment-increment 1
... 省略
transaction-read-only FALSE
transaction-write-set-extraction XXHASH64
updatable-views-with-limit YES
查看服务器在运⾏时系统变量的值,连接到MySQL并执⾏以下语句:
show variables [like ...];

其中可以跟 like 语句和通配符查找某些具体的系统变量,例如:

查看服务器在运⾏时的⼀些统计和状态指⽰器,连接到MySQL并执⾏以下语句:
show status like [...];
其中可以跟 like 语句和通配符查找某些具体的 统计和状态指⽰器,例如:
系统变量和状态信息也可以使⽤ mysqladmin命令来查看:
mysqladmin variables
mysqladmin extended status
关于服务器的选项、系统变量、状态变量参考以下官⽹列
https://dev.mysql.com/doc/refman/8.0/en/server-option-variable-reference.html

系统变量和选项

当通过mysqld启动数据库服务器时,可以通过选项⽂件或命令⾏中提供选项,但是,在⼤多数情况下,为确保服务器每次运⾏时都使⽤相同的选项,最好的⽅法是在选项⽂件中指定相应的选项,
mysqld从选项⽂件中的 [mysqld] [server] 组(节点)中读取选项内容。
mysqld接受的选项可以通过 mysqld --verbose --help 查看,列表中的有些项⽬是可以在服务器启动时设置的系统变量,系统变量可以在连接MySQL后使⽤ SHOW VARIABLES 语句查看,但有些内容只在 --help 中存在,使⽤ SHOW VARIABLES 时并没有显⽰,这是因为它们只是选项⽽不是系统变量。
注意:选项值可以通过命令⾏和选项⽂件设置,部分系统变量可以通过SET语句动态设置值。
常⽤选项如下:
选项系統变量说明
--character-set-servercharacter-set-server服务器的默认字符集,默认 utf8mb4,如果设置了这个变量,还应该设置 collation_server 来指定字符集的排序规则。
--collation-servercollation_server
服务器的默认排序,默认utf8mb4_0900_ai_ci
--port
port
MySQL服务启动后监听的端⼝号
--datadir
datadir
MySQL服务器的数据⽬录
--default-storage-engine
default_storag
e_engine
表的默认存储引擎
--log-output
log_output
⼀般查询⽇志和慢速查询⽇志输出的⽬的地,值可以是 TABLE , FILE NONE ,可以同时指定多个值, NONE 的优先级最⾼
--general-log
general_log
是否启⽤⼀般查询⽇志。值为 0 (或 OFF )禁⽤⽇志,为 1 (或 ON )来启⽤⽇志。⽇志输出⽬录由 log_output 系统变量控制
--general-log-file
general_log_file
⼀般查询⽇志⽂件的名称。默认值是 host_name .log
--slow-query-log
slow_query_log
是否启⽤慢查询⽇志。值为 0 (或 OFF )禁⽤⽇志,为 1 (或 ON )来启⽤⽇志。⽇志输出⽬录由 log_output 系统变量控制
--slow-query-log-file
slow_query_log_file
慢查询⽇志⽂件的名称。默认值是 host_name -slow.log
--long-query-time
long_query_time
如果查询花费的时间超过这个数秒,服务器将增加Slow_queries状态变量,如果慢速查询⽇志开启,查询将被记录到慢速查询⽇志⽂件中,默认值为10,单位为秒
--log-error
log_error
默认的错误⽇志⽬标。如果⽬标是控制台值为 stderr ,⽬标是⼀个⽂件,值为具体的⽂件名
--log-bin
指定⽤于⼆进制⽇志⽂件的基本名称
--server-id
server_id该变量指定服务器ID,默认为 1
--max-connections
max_connections
允许客⼾端同时连接的最⼤数

使⽤系统变量

  • 当使⽤选项设置⼀个数值的变量时,可以带有后缀 K M G (⼤⼩写不限)表⽰ 1024 、1024^2 或 1024^3 ;从MySQL 8.0.14 开始,后缀也可以⽤ T P E 来表⽰ 1024^4 、1024^5 或 1024^6 .⽰例:为服务器指定 256 KB 的排序缓冲区⼤⼩和 1 GB 的最⼤数据包⼤⼩
# 在命令⾏的指定
mysqld --sort-buffer-size=256K --max-allowed-packet=1G
# 在选项⽂件中指定
[mysqld]
sort_buffer_size=256k
max_allowed_packet=1g
  • 系统变量有两个作⽤域,分别是 Global (全局)和 Session (会话), Global 全局变量影响服务器的整体操作, Session 会话变量影响各个客⼾端连接的操作。给定的系统变量可以同时具有 全局值和会话值,它们的关系如下:服务器启动时,会将每个全局变量初始化并设置默认值,具体的值可以通过命令⾏或选项⽂件更改;服务器为每个客⼾端维护⼀组 Session 变量,在客⼾端连接时使⽤相应全局变量的当前值进⾏初始化。
  • ⼤部分系统变量是动态的,在服务器运⾏时,可以连接 mysql 使⽤ SET 语句设置系统变量,需要指定作⽤域(也可以在前⾯加上@@ 修饰符),然后指定系统变量的名称,如下所⽰:

1.设置全局系统变量最⼤连接数为1000:

set global max_connections = 1000;
set @@global.max_connections = 1000;

2.将全局系统变量持久化到 mysqld-auto.cnf ⽂件(同时设置运⾏时值):

# PERSIST 表⽰持久化的同时设置全局变量的值
set persist max_connections = 1000;
set @@persist.max_connections = 1000;

下表为MySQL的配置文件,配置优先级往下逐级递增,其中 mysqld-auto.cnf ⽂件为配置优先级最高的文件,默认不存在该文件,只有使用 set persist 语句时才生成该文件。

⽂件名说明

%WINDIR%\my.ini , %WINDIR%\my.cnf

全局,%WINDIR%是一个环境变量,它代表Windows操作系统的安装目录,通常等于C:\Windows

C:\my.ini , C:\my.cnf

全局

BASEDIR\my.ini , BASEDIR\my.cnf

全局,其中BASEDIR指mysql的安装路径,这是最常用的配置文件

defaults-extra-file

如果存在其他选项⽂件可以通过 --defaults-extra-file 选项指定

%APPDATA%\MySQL\.mylogin.cnf

登录路径选项(仅限客⼾端),%APPDATA% 表⽰应⽤程序数据的⽬录,如C:\Users\[用户名]\AppData\Roaming

DATADIR\mysqld-auto.cnf

系统变量 (仅限服务器)

  mysqld-auto.cnf 文件位于 /var/lib/mysql 路径下,其内容如下
root@hcss-ecs-9734:/var/lib/mysql# cat mysqld-auto.cnf
{"Version": 2, "mysql_dynamic_parse_early_variables": {"max_connections": {"Value": "1000", "Metadata": {"Host": "localhost", "User": "root", "Timestamp": 1735369777874841}}}}

在mysql中也可以看到 max_connections 已经被设置为1000

3.将全局系统变量持久化到 mysqld-auto.cnf ⽂件(不设置运⾏时值):
# PERSIST 表⽰持久化的同时设置全局变量的值
set persist_only max_connections = 1000;
set @@persist_only.max_connections = 1000;
删除持久化的系统变量可以使⽤语句
reset persist if exits system_var_name;
4.设置 Session 系统变量,时区为"+8:00":
set session time_zone = '+8:00';
set @@session.time_zone = '+8:00';
set @@time_zone = '+8:00';
  • 对于数值型的系统变量,⽤带有后缀的值指定时,只适⽤于选项⽅式,⽽不能⽤在 SET ⽅式中;SET ⽅式可以使⽤表达式为系统变量指定值,⽽在选项⽅式中不允许,如下所⽰:
# 选项形式
mysqld --max_allowed_packet=16M # 允许
mysqld --max_allowed_packet=16*1024*1024 # 不允许
# 运⾏时SET形式
set global max_allowed_packet=16M; # 不允许
set global max_allowed_packet=16*1024*1024; # 允许

⽰例:服务器常⽤配置

Linux系统下编辑 /etc/mysql/my.cnf
Windows系统下打开MySQL Server程序安装路径/my.ini,例如我电脑上为D:\mysql\MySQL Server 8.0\my.ini
注意:
  • 编辑前先备份原始⽂件
  • 如果要修改数据⽬录选项建议先停⽌MySQL服务,并把原data⽬录整体复制到新路径,配置完成后重启服务
[mysqld] 节点下添加以下内容
# MySQL 服务节点
[mysqld]
# MySQL 服务启动后监听的端⼝号
port=3306
# 数据⽬录的路径,这⾥演⽰的是windows下的配置,注意分隔符⽤/,如果是\则需要转义为\\.
# 把原data⽬录整体复制到新路径
datadir=D:/database/MySQL/data8.0
# MySQL 服务器的字符集与排序规则
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci 
# 新建表时使⽤的存储引擎,windows下已默认配置
default-storage-engine=INNODB
#注意要多敲一个回车键,即光标要在最后一行配置信息的下一行

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

echarts没有map地图解决方案

在echarts4.9以后的版本中移除了map地图 使用命令npm install echarts --save它会下载最新版本 的echarts 所有我们要下载回echarts4.9版本中 如果已经下载了最新的可以卸载 // 卸载echarts运行: npm uninstall echarts然后再去下载4.9版本 // 安装4.9版本的ech…

Java高频面试之SE-06

hello啊,各位老6!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶 访问修饰符 public、private、protected的区别是什么? 在Java中,访问修饰符用于控制类、方法和变量的访问权限。主要的访…

pymysql中的问题

首先像代码所示: 正确输出了mysql版本,但是,在pycharm链接mysql成功后创建表时又出现报错内容: Traceback (most recent call last): File "D:\PycharmProjects\PythonProject0\pymysqllearning.py", line 13, in &…

VuePress搭建个人博客

VuePress搭建个人博客 官网地址: https://v2.vuepress.vuejs.org/zh/ 相关链接: https://theme-hope.vuejs.press/zh/get-started/ 快速上手 pnpm create vuepress vuepress-starter# 选择简体中文、pnpm等, 具体如下 .../19347d7670a-1fd8 | 69 .../19…

【DC简介--Part1】

DC简介-Part1 1 overview1.1 DC操作步骤1.2 Steps1.2.1 Develop HDL files1.2.2 Specify libraries1.2.3 Read design1.2.4 Define design environment1.2.5 Set design constraints1.2.6 Select compile strategy1.2.7 Synthesize and optimize the design1.2.8 Analyze and r…

【Unity3D】ECS入门学习(十二)IJob、IJobFor、IJobParallelFor

IJob&#xff1a;开启单个线程进行计算&#xff0c;线程内不允许对同一个数据进行操作&#xff0c;也就是如果你想用多个IJob分别计算&#xff0c;将其结果存储到同一个NativeArray<int>数组是不允许的&#xff0c;所以不要这样做&#xff0c;如下例子就是反面教材&#…

HCIA-Access V2.5_7_1_XG(S)原理_系统概述

近年来&#xff0c;随着全球范围内接入市场的飞快发展以及全业务运营的快速开展&#xff0c;已有的PON技术标准在带宽需求&#xff0c;业务支撑能力以及接入节点设备和配套设备的性能提升等方面都面临新的升级需求&#xff0c;而GPON已经向10G GPON演示&#xff0c;本章将介绍1…

imgproxy图像处理的高效与安全

摘要 imgproxy作为一个高效且安全的独立服务器,为图像处理提供了全新的解决方案。它不仅简化了图像调整和转换的过程,还极大地提升了处理速度,确保了整个流程的安全性。通过集成imgproxy,用户可以轻松优化网页上的图像,提高加载速度,改善用户体验。本文将深入探讨imgpro…

CPT203 Software Engineering 软件工程 Pt.4 软件设计(中英双语)

文章目录 6. 设计概念6.1 Principle6.2 Concepts6.2.1 General design concepts&#xff08;常见的设计概念&#xff09;6.2.1.1 Abstraction&#xff08;抽象&#xff09;6.2.1.2 Modularity&#xff08;模块化&#xff09;6.2.1.3 Functional independence&#xff08;功能独…

MultiDiff 论文解读

一、CameraCtrl AnimateDiff->MotionCtrl->CameraCtrl CameraCtrl将多帧图像的Plucker射线输入到Camera Encoder&#xff0c;Plucker射线可以表示每个像素对应的光线方向。 Camera Encoder包括ResNet block和Temporal Attention&#xff0c;来提取每一帧相机位姿的时序…

OpenCV-Python实战(4)——图像处理基础知识

一、坐标 在 OpenCV 中图像左上角坐标为&#xff08;0&#xff0c;0&#xff09;&#xff0c;竖直向下为 Y&#xff08;height&#xff09; &#xff1b;水平向右为 X&#xff08;width&#xff09;。 二、生成图像 2.1 灰度图像 img np.zeros((h,w), dtype np.uint8) i…

【Compose multiplatform教程18】多平台资源的设置和配置

要正确配置项目以使用多平台资源&#xff0c;请执行以下操作&#xff1a; 添加库依赖项。 为每种资源创建必要的目录。 为限定资源创建其他目录&#xff08;例如&#xff0c;深色 UI 主题或本地化字符串的不同图像&#xff09;。 依赖项和目录设置 要访问多平台项目中的资源…

html转PDF

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 在项目中会有一些需要页面转成PDF的情况&#xff0c;这里需要配合一些插件可以完成 使用html2canvas将使用canvas将页面转为base64图片流&#xff0c;并插入jspdf插件中&#xff0c;保存并下载pdf。…

32132132123

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

微服务保护-sentinel

为什么要有微服务保护&#xff1f; 微服务保护是为了避免微服务雪崩而出现的&#xff0c;每个微服务能处理的请求是有限的&#xff0c;如果一个微服务出现问题导致一个请求进入微服务的时间太久&#xff0c;就会导致大量去请求停滞在微服务内部&#xff0c;这样就会过分占用系统…

深入浅出 MyBatis | CRUD 操作、配置解析

3、CRUD 3.1 namespace namespace 中的包名要和 Dao/Mapper 接口的包名一致&#xff01; 比如将 UserDao 改名为 UserMapper 运行发现抱错&#xff0c;这是因为 UserMapper.xml 中没有同步更改 namespace 成功运行 给出 UserMapper 中的所有接口&#xff0c;接下来一一对…

【LLM综述】29种大模型Prompt Engineering技术

note 从零样本&#xff08;Zero-shot&#xff09;提示到最新进展的各种提示技术&#xff0c;包括推理和逻辑链&#xff08;Chain-of-Thought, CoT&#xff09;提示、自动链式思考&#xff08;Auto-CoT&#xff09;提示、自我一致性&#xff08;Self-Consistency&#xff09;提…

【Java基础-29】深入理解Java中的super关键字:用法、场景与最佳实践

在Java编程中&#xff0c;super关键字是一个非常重要的概念&#xff0c;尤其在继承和多态的上下文中。它用于访问父类的成员&#xff08;属性、方法或构造函数&#xff09;&#xff0c;帮助开发者在子类中更好地管理和扩展父类的功能。本文将深入探讨super关键字的用法、适用场…

linux-软硬链接

我们今天再来聊一下这个"软硬链接"的问题. 目录 1. 软硬链接长什么样?2. 软连接和硬链接的特征 和 应用2.1 软连接特征 及其 应用?①软连接是什么?②软连接的应用1: 快捷方式③软连接的应用2: 方便维护库文件 2.2 硬连接特征 及其 应用?①硬链接是什么?②引用计…