MySQL的启动选项和系统变量该如何配置?
MySQL的配置信息可以通过两种方式实现,一种是命令行形式,在启动MySQL服务时后边带上相关配置参数,此种方式会在MySQL重启后失效。另外一种是通过写入配置文件,如my.cnf,启动或者重启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=3306mysqld -P3306mysqld -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.pidsocket = /var/run/mysqld/mysqld.sockdatadir = /var/lib/mysqllog-error = /var/log/mysql/error.log# 优化配置wait_timeout=10back_log=600key_buffer_size = 2048Mread_buffer_size = 100Mmax_allowed_packet = 1000Mthread_stack = 192Kthread_cache_size = 4myisam-recover-options = BACKUPmax_connections = 4000max_user_connections = 0max_connect_errors = 65535open_files_limit = 10240......
注意1. [server]组下边的启动选项将作用于所有的服务器程序,如mysqld、mysqld_safe、mysql.server2. [client]组下边的启动选项将作用于所有的客户端程序,如mysql、mysqladmin、mysqldump3. 同一个配置文件中多个组的优先级,将以最后一个出现的组中的启动选项为准
系统变量
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 = MyISAMmax-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的调控按钮——启动选项和系统变量
一.命令行上使用启动选项 启动选项的通用格式 --启动选项1[=值1] --启动选项2[=值2] ... --启动选项n[=值n] 禁止TCP/IP链接 略 修改MySQL服务的默认存储引 ...
- 【Mysql】了解Mysql中的启动参数和系统变量
一.启动参数 在程序启动时指定的设置项也称之为启动选项(startup options),这些选项控制着程序启动后的行为. 1)在命令行上使用选项 启动服务器程序的命令行后边指定启动选项的通用格式就是 ...
- 深入理解mysql-进阶知识点,启动项、系统变量、字符集介绍!
mysql数据库是当前应用最为的广泛的数据库,在实际工作中也经常接触到.真正用好mysql也不仅仅是会写sql就行,更重要的是真正理解其内部的工作原理.本文先从宏观角度介绍一些mysql相关的知识点, ...
- GNU Linux系统变量(sysctl配置命令)综合使用
查看全部kernel变量的值 sysctl -a 怎样查看一个系统变量的值 1).cat /proc/sys/net/ipv4/ip_local_port_range 32768 61000 2).s ...
- MySQL 8 服务器选项配置
查看服务器使用的默认命令选项和系统变量: mysqld --help --verbose 查看服务器当前运行时使用的系统变量和状态变量: mysql> SHOW VARIABLES; mysql ...
- MYSQL服务器系统变量
一:查看服务所有变量 MySQL服务器维护许多配置其操作的系统变量.每个系统变量都有一个默认值.可以使用命令行或选项文件中的选项在服务器启动时设置系统变量.其中大多数都可以在运行时使用动态更改 SET ...
- Mysql 系统参数 系统变量 状态变量
1.系统参数,也就是命令行选项,执行命令的时候,后面跟的参数,系统参数很多,不可能每次执行程序的时候,指定这些参数.这些参数写在配置文件(Windows下是my.ini,Linux是my.cnf),执 ...
- mysql show variables系统变量详解
mysql系统变量详解 mysqld服务器维护两种变量.全局变量影响服务器的全局操作.会话变量影响具体客户端连接相关操作. 服务器启动时,将所有全局变量初始化为默认值.可以在选项文件或命令行中指定的选 ...
- MySQL用户和系统变量
--MySQL用户和系统变量 -----------------------------2014/05/19 用户变量 可以先在用户变量中保存值然后在以后引用它:这样可以将值从一个语句传递到另一个语句 ...
随机推荐
- JavaScript实现减速返回顶部
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JMeter关联陌生又熟悉
JMeter关联是什么 JMeter关联,这几个字看着可能会有点陌生,实际上却是工作中经常会做的一件事情,尤其是接口自动化,它指的是把一个接口的响应作为另一个接口的参数,从而把接口关联起来. JMet ...
- 看完这篇包你进大厂,实战即时聊天,一文说明白:聊天服务器+聊天客户端+Web管理控制台。
一.前言 说实话,写这个玩意儿是我上周刚刚产生的想法,本想写完后把代码挂上来赚点积分也不错.写完后发现这东西值得写一篇文章,授人予鱼不如授人以渔嘛(这句话是这么说的吧),顺便赚点应届学生MM的膜拜那就 ...
- COS 数据湖最佳实践:基于 Serverless 架构的入湖方案
01 前言 数据湖(Data Lake)概念自2011年被推出后,其概念定位.架构设计和相关技术都得到了飞速发展和众多实践,数据湖也从单一数据存储池概念演进为包括 ETL 分析.数据转换及数据处理的下 ...
- 『动善时』JMeter基础 — 22、JMeter中实现参数化(CSV)
目录 1.参数化的定义 2.什么情况下需要用到参数化 3.JMeter实现参数化的方式 4.CSV数据文件设置界面详细说明 (1)CSV数据文件设置组件界面说明 (2)补充说明:Recycle on ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十四)——开发环境容器调试小技巧
之前有很多同学提到如何做容器调试,特别是k8s环境下的容器调试,今天就讲讲我是如何调试的.大家都知道在vs自带的创建项目模板里勾选docker即可通过F5启动docker容器调试.但是对于启动在k8s ...
- [前端] AJAX
背景 Asynchronous JavaScript And XML:异步js和XML,可实现异步刷新 用途 验证提交的用户名是否已存在 不使用AJAX,需要提交数据后,刷新页面来验证 使用AJAX, ...
- -bash: ll: 未找到命令
第一步将alias ll='ls -l'添加到/etc/profile # head /etc/profile# /etc/profilealias ll='ls -l'# System wide e ...
- 技术干货 | 关于 WKWebview 网络拦截,你想知道的都在这里
原生 WKWebView 在独立于 app 进程之外的进程中执行网络请求,请求数据不经过主进程,因此在 WKWebView 上直接使用 NSURLProtocol 是无法拦截请求的. 但是由于 mPa ...
- 推荐:C#命名规范12条
编码规范对于程序员而言尤为重要,有以下几个原因: 1.一个项目的生命周期中,80%的花费在于维护; 2.几乎没有任何一个项目,在其整个生命周期中,均由最初的开发人员来维护; 3.命名规范可以改善项目的 ...