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=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%‘;

原文地址:https://blog.51cto.com/14230003/2468038

时间: 2024-10-13 22:46:03

MySQL的启动选项和系统变量该如何配置?的相关文章

GNU Linux系统变量(sysctl配置命令)综合使用

查看所有kernel变量的值 sysctl -a 如何查看一个系统变量的值 1).cat /proc/sys/net/ipv4/ip_local_port_range 32768 61000 2).sysctl -a | grep ip_local_port_range net.ipv4.ip_local_port_range = 32768 61000 修改方法: 1).echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_r

MySQL系统变量

在数据库中,变量分为系统变量(以'@@'开头)以及用户自定义变量.系统变量分为全局系统变量以及会话系统变量,静态变量属于特殊的全局系统变量. 全局系统变量(global)和会话系统变量(session),有时也把全局系统变量称为全局变量,把会话系统变称为local变量或者系统会话变量.Mysql服务成功启动后,如果没有mysql客户机连接mysql服务器,那么mysql服务器内存中的系统变量全部是全局系统变量. 每个mysql客户机成功连接mysql服务器后,都会产生与之对应的会话.会话期间,没

MYSQL-服务器选项和服务器变量

MySQL中的系统数据库 mysql数据库 是mysql的核心数据库,类似于Sql Server中的master库,主要负责存储数据库的用户.权限设置.关键字等mysql自己需要使用的控制和管理信息 performance_schema数据库 MySQL 5.5开始新增的数据库,主要用于收集数据库服务器性能参数,库里表的存储引擎均为PERFORMANCE_SCHEMA,用户不能创建存储引擎为PERFORMANCE_SCHEMA的表 information_schema数据库 MySQL 5.0之

MySQL 系统变量(system variables)

MySQL系统变量(system variables)实际上是一些系统参数,用于初始化或设定数据库对系统资源的占用,文件存放位置等等.这些个系统变量可以分为全局以及会话级别层面来修改,有些也可以进行动态修改.本文主要介绍了系统变量的一些概念以及如何设置查看这些系统变量. 1.什么是系统变量   系统变量实际上用于控制数据库的一些行为和方式的参数.比如我们启动数据库的时候设定多大的内存,使用什么样的隔离级别,日志文件的大小,存放位置等等一系列的东东.当然我们数据库系统启动后,有些系统变量(参数)也

MySQL用户和系统变量

--MySQL用户和系统变量-----------------------------2014/05/19用户变量可以先在用户变量中保存值然后在以后引用它:这样可以将值从一个语句传递到另一个语句.用户变量与连接有关.也就是说,一个客户端定义的变量不能被其它客户端看到或使用.当客户端退出时,该客户端连接的所有变量将自动释放.用户变量的形式为@var_name,其中变量名var_name可以由当前字符集的文字数字字符.'.'.'_'和'$'组成. 默认字符集是cp1252 (Latin1).可以用m

mysql show variables系统变量详解

mysql系统变量详解 mysqld服务器维护两种变量.全局变量影响服务器的全局操作.会话变量影响具体客户端连接相关操作. 服务器启动时,将所有全局变量初始化为默认值.可以在选项文件或命令行中指定的选项来更改这些默认值.服务器启动后,通过连接服务器并执行SET GLOBAL var_name语句可以更改动态全局变量.要想更改全局变量,必须具有SUPER权限. 服务器还为每个客户端连接维护会话变量.连接时使用相应全局变量的当前值对客户端会话变量进行初始化.客户可以通过SET SESSION var

Mysql 系统参数 系统变量 状态变量

1.系统参数,也就是命令行选项,执行命令的时候,后面跟的参数,系统参数很多,不可能每次执行程序的时候,指定这些参数.这些参数写在配置文件(Windows下是my.ini,Linux是my.cnf),执行程序的时候使用 --defaults-file 2.系统变量,系统变量是mysqld运行时的变量,这些变量对应着启动mysqld时的系统参数.考虑下面的情况:mysqld启动的时候,在配置文件指定了某个系统参数,启动之后,想修改这个参数,怎么办? 笨的办法是:关闭mysqld,修改配置文件,重启m

Mysql启动服务提示系统找不到指定的文件

Mysql启动服务: C:\Windows\system32>net start mysql发生系统错误 2. 系统找不到指定的文件. 怎么还是报这个错?难道不是由于配置的原因?对,不是由于上面的配置的问题,但上面的配置添加后也没有错.那是什么原因? 这里是最需要注意的地方,在安装mysql服务时,一定要切换到mysql安装目录的bin目录下,不管你是否配置环境变量,否则在安装完后启动服务还是会报上面的错误. 切换到bin目录后,先删除前面安装的mysql服务(删除服务不一定要到bin目录),再

mysql系统变量查询

mysql系统变量包括全局变量(global)和会话变量(session),global变量对所有session生效,session变量包括global变量.mysql调优必然会涉及这些系统变量的调整,所以我们首先得会查询系统变量. 1. 查询全局变量:show global variables \G; 2. 查询会话变量:show session variables \G;或show variables: 可以看到,变量表包含variable_name,value两个字段,所以可以通过这两个字