MySQL 的启动选项和系统变量
来源:SegmentFault
2023-02-16 15:16:10
0浏览
收藏
对于一个数据库开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《MySQL 的启动选项和系统变量》,主要介绍了MySQL,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!
MySQL的配置信息可以通过两种方式实现,一种是命令行形式,在启动MySQL服务时后边带上相关配置参数,此种方式会在MySQL重启后失效。另外一种是通过写入配置文件,如my.cnf,启动或者重启MySQL服务都会生效,此种方式是永久生效。
启动选项
命令行
在MySQL服务命令启动时,带上配置参数启动方式可参考这篇:MySQL 的启动和连接方式
命令格式: 启动命令 --启动选项1[=值1] --启动选项2[=值2] ... --启动选项n[=值n]
例如: mysqld --default-storage-engine=MyISAM //设置默认存储引擎
错误例子: mysqld --default-storage-engine = MyISAM //设置默认存储引擎 原因: 因为启动项和值之间的等号不能有空格
参数的长形式和短形式
配置参数有长形式和短形式之分,有些作用是一样的,只是写法不同而已
--host => -h //主机 --port => -P // 端口 --user => -u //用户 --password => -p //密码 --version => -V //版本 ......
例子: mysqld --port=3306 mysqld -P3306 mysqld -P 3306
注意: 密码不能有空格 mysqld -proot
配置文件
配置文件my.cnf的位置,有可能是以下的几种,如MySQL服务启动时未指定配置文件时,会从以下地方查找读取并初始化。
* /etc/my.cnf * /etc/mysql/my.cnf * defaults-extra-file //指定的额外配置文件路径 * SYSCONFDIR/my.cnf //cmake编译安装情况 * $MYSQL_HOME/my.cnf //设置环境变量,默认安装路径 * ~/.my.cnf //用户特定选项,家目录 * ~/.mylogin.cnf //用户特定的登录路径选项(仅限客户端),mysql_config_editor修改,不是纯文件
注意 1. 在配置文件中指定的启动选项不允许加--前缀,并且每行只指定一个选项,而且=周围可以有空白字符 2. 如果我们在多个配置文件中设置了相同的启动选项,那以最后一个配置文件中的为准 3. 如果同一个启动选项既出现在命令行中,又出现在配置文件中,那么以命令行中的启动选项为准 4. mysqld --defaults-file=/tmp/myconfig.txt //在程序启动的时候将只在/tmp/myconfig.txt路径下搜索配置文件。如果文件不存在或无法访问,则会发生错误
配置组
配置文件一共可以以下这些组别:mysqld、mysqld_safe、mysql.server、mysql、mysqladmin、mysqldump,可以针对不同组别进行配置

内容格式
[server] (具体的启动选项...) [mysqld] (具体的启动选项...) [mysqld_safe] (具体的启动选项...) [client] (具体的启动选项...) [mysql] (具体的启动选项...) [mysqladmin] (具体的启动选项...)
例子: [mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql log-error = /var/log/mysql/error.log # 优化配置 wait_timeout=10 back_log=600 key_buffer_size = 2048M read_buffer_size = 100M max_allowed_packet = 1000M thread_stack = 192K thread_cache_size = 4 myisam-recover-options = BACKUP max_connections = 4000 max_user_connections = 0 max_connect_errors = 65535 open_files_limit = 10240 ......
注意 1. [server]组下边的启动选项将作用于所有的服务器程序,如mysqld、mysqld_safe、mysql.server 2. [client]组下边的启动选项将作用于所有的客户端程序,如mysql、mysqladmin、mysqldump 3. 同一个配置文件中多个组的优先级,将以最后一个出现的组中的启动选项为准
系统变量
MySQL服务器程序运行过程中会用到许多影响程序行为的变量,它们被称为MySQL系统变量。
例如: 1. 允许同时连入的客户端数量用系统变量max_connections表示 2. 表的默认存储引擎用系统变量default_storage_engine表示 3. 查询缓存的大小用系统变量query_cache_size表示 ......
查看
格式: SHOW VARIABLES [LIKE 匹配的模式];
例如: SHOW VARIABLES LIKE 'default_storage_engine';

设置
通过启动项设置
命令行设置
mysqld --default-storage-engine=MyISAM --max-connections=10
配置文件设置
[mysqld] default-storage-engine = MyISAM max-connections = 10 ......
注意: 对于启动选项来说,如果启动选项名由多个单词组成,各个单词之间用短划线-或者下划线_连接起来都可以,但是它对应的系统变量的单词之间必须使用下划线_连接起来(即通过show查看或set设置时)
服务器程序运行过程中设置
系统变量比较牛逼的一点就是,对于大部分系统变量来说,它们的值可以在服务器程序运行过程中进行动态修改而无需停止并重启服务器不过系统变量有全局和当前会话作用域之分
作用域
GLOBAL:全局变量,影响服务器的整体操作。 SESSION:会话变量,影响某个客户端连接的操作。(别名叫LOCAL)
格式: 1. SET [GLOBAL|SESSION] 系统变量名 = 值; 2. SET [@@(GLOBAL|SESSION).]var_name = XXX;
global
例如: 1. SET GLOBAL default_storage_engine = InnoDB; 2. SET @@GLOBAL.default_storage_engine = InnoDB;
session
例如: 1. SET SESSION default_storage_engine = InnoDB; 2. SET @@SESSION.default_storage_engine = InnoDB; 3. SET default_storage_engine = InnoDB;//默认 session
查看
格式:SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式]; 1. SHOW SESSION VARIABLES LIKE 'default_storage_engine'; 2. SHOW GLOBAL VARIABLES LIKE 'default_storage_engine';
注意:
如果某个客户端改变了某个系统变量在GLOBAL作用范围的值,并不会影响该系统变量在当前已经连接的客户端作用范围为SESSION的值,只会影响后续连入的客户端在作用范围为SESSION的值。
补充说明
并不是所有系统变量都具有GLOBAL和SESSION的作用范围
* 有一些系统变量只具有GLOBAL作用范围,比方说max_connections,表示服务器程序支持同时最多有多少个客户端程序进行连接 * 有一些系统变量只具有SESSION作用范围,比如insert_id,表示在对某个包含AUTO_INCREMENT列的表进行插入时,该列初始的值 * 有一些系统变量的值既具有GLOBAL作用范围,也具有SESSION作用范围,比如我们前边用到的default_storage_engine,而且其实大部分的系统变量都是这样的
有些系统变量是只读的,并不能设置值
比方说version,表示当前MySQL的版本,我们客户端是不能设置它的值的,只能在SHOW VARIABLES语句里查看。
启动选项与系统变量的关系
启动选项是在程序启动时我们程序员传递的一些参数,而系统变量是影响服务器程序运行行为的变量
* 大部分的系统变量都可以被当作启动选项传入 * 有些系统变量是在程序运行过程中自动生成的,是不可以当作启动选项来设置,比如auto_increment_offset、character_set_client啥的 * 有些启动选项也不是系统变量,比如defaults-file
状态变量
为了让我们更好的了解服务器程序的运行情况,MySQL服务器程序中维护了好多关于程序运行状态的变量,它们被称为状态变量。比方说Threads_connected表示当前有多少客户端与服务器建立了连接,Handler_update表示已经更新了多少行记录
由于状态变量是用来显示服务器程序运行状况的,所以它们的值只能由服务器程序自己来设置,我们程序员是不能设置的
查看
格式: SHOW [GLOBAL|SESSION] STATUS [LIKE 匹配的模式]; 例如: SHOW STATUS LIKE 'thread%';

参考:掘金小册《MySQL 是怎样运行的:从根儿上理解 MySQL》
好了,本文到此结束,带大家了解了《MySQL 的启动选项和系统变量》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多数据库知识!
版本声明
本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除

- 上一篇
- 从一个问题来加深对mysql可重复读的理解

- 下一篇
- MySQL 8功能详解——Common table expression (CTE)
评论列表
-
- 负责的咖啡豆
- 真优秀,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢楼主分享技术贴!
- 2023-05-04 14:57:50
-
- 大气的鸵鸟
- 太详细了,码起来,感谢博主的这篇技术文章,我会继续支持!
- 2023-04-26 13:01:46
-
- 善良的山水
- 这篇博文真及时,作者加油!
- 2023-04-02 14:04:26
-
- 陶醉的水池
- 这篇文章真及时,细节满满,真优秀,收藏了,关注师傅了!希望师傅能多写数据库相关的文章。
- 2023-03-28 06:59:22
查看更多
最新文章
-
- 数据库 · MySQL | 2小时前 | mysql 字符集 中文乱码 utf8mb4 utf8mb4_unicode_ci
- MySQL中文乱码解决方案与字符集修改命令大全
- 339浏览 收藏
-
- 数据库 · MySQL | 1天前 | 索引 数据类型 字符集 存储引擎 CREATETABLE
- MySQL新建表操作指南与建表技巧
- 462浏览 收藏
-
- 数据库 · MySQL | 1个月前 | 条件判断
- CASEWHEN条件判断的嵌套使用详解与实战场景分析
- 469浏览 收藏
-
- 数据库 · MySQL | 1个月前 | java php
- CSV文件批量导入MySQL的性能优化秘籍大揭秘
- 289浏览 收藏
-
- 数据库 · MySQL | 1个月前 |
- GaleraCluster多主集群配置与冲突解决攻略
- 239浏览 收藏
-
- 数据库 · MySQL | 1个月前 | 窗口函数实战
- MySQL窗口函数实战案例深度剖析
- 315浏览 收藏
查看更多
课程推荐
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
查看更多
AI推荐
-
- 笔灵AI生成答辩PPT
- 探索笔灵AI生成答辩PPT的强大功能,快速制作高质量答辩PPT。精准内容提取、多样模板匹配、数据可视化、配套自述稿生成,让您的学术和职场展示更加专业与高效。
- 20次使用
-
- 知网AIGC检测服务系统
- 知网AIGC检测服务系统,专注于检测学术文本中的疑似AI生成内容。依托知网海量高质量文献资源,结合先进的“知识增强AIGC检测技术”,系统能够从语言模式和语义逻辑两方面精准识别AI生成内容,适用于学术研究、教育和企业领域,确保文本的真实性和原创性。
- 29次使用
-
- AIGC检测-Aibiye
- AIbiye官网推出的AIGC检测服务,专注于检测ChatGPT、Gemini、Claude等AIGC工具生成的文本,帮助用户确保论文的原创性和学术规范。支持txt和doc(x)格式,检测范围为论文正文,提供高准确性和便捷的用户体验。
- 35次使用
-
- 易笔AI论文
- 易笔AI论文平台提供自动写作、格式校对、查重检测等功能,支持多种学术领域的论文生成。价格优惠,界面友好,操作简便,适用于学术研究者、学生及论文辅导机构。
- 43次使用
-
- 笔启AI论文写作平台
- 笔启AI论文写作平台提供多类型论文生成服务,支持多语言写作,满足学术研究者、学生和职场人士的需求。平台采用AI 4.0版本,确保论文质量和原创性,并提供查重保障和隐私保护。
- 36次使用
查看更多
相关文章
-
- golang MySQL实现对数据库表存储获取操作示例
- 2022-12-22 499浏览
-
- 搞一个自娱自乐的博客(二) 架构搭建
- 2023-02-16 244浏览
-
- B-Tree、B+Tree以及B-link Tree
- 2023-01-19 235浏览
-
- mysql面试题
- 2023-01-17 157浏览
-
- MySQL数据表简单查询
- 2023-01-10 101浏览