首页 > 数据库 >MySQL 配置选项和变量间的关系

MySQL 配置选项和变量间的关系

时间:2023-12-04 18:46:24浏览次数:32  
标签:选项 变量 配置文件 mysqld MySQL 服务器

MySQL 变量

MySQL中的变量主要分为两大类,用户变量和系统变量。

1、用户变量

用户变量是用户自定义的变量,用户变量以@符号开头,通过set或者select可以给用户变量赋值。

用户变量是属于会话级别的变量,变量的值只在当前会话中有效,当会话结束时,这些变量的值就会丢失。


例如:

SET @myVariable = 100; 或 SELECT @myVariable := 100;

2、系统变量

系统变量主要就是用来定义MySQL服务器的操作和配置,系统变量可以使用 SHOW VARIABLES 语句查看,可以用SET语句修改(某些变量是只读的,无法修改)。


其实系统变量还可以细分为全局变量和会话变量。

  • 全局变量影响服务器的整体操作,代表了服务器的当前状态。例如,innodb_buffer_pool_size变量决定了InnoDB存储引擎用于缓冲池的内存大小。

  • 会话变量仅影响当前连接的会话。例如,sort_buffer_size变量决定了为排序操作分配的内存量。

MySQL 服务选项

1、mysqld配置选项

前面我们也说过,MySQL服务端的服务进程是mysqld,mysqld有很多配置选项,如果在启动mysql的进程的时候手动指定,这样管理器来很不方便。


例如:

mysqld --port=3306 --pid-file=/var/run/mysqld/mysqld.pid  --datadir=/var/lib/mysql

所以可以将这些配置按照一定的格式(忽略选项的 -- 前缀,直接写选项名称),放在一个配置文件里面进行统一管理,方便对这些参数进行统一管理和简化启动命令。


例如:

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock

port            = 3306
bind-address    = 0.0.0.0

basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp

log_error = /var/log/mysql/error.log

# 默认字符集为utf8mb4,这是一个支持Unicode的字符集,能够存储任何Unicode字符。
character_set_server=utf8mb4
collation-server      = utf8mb4_unicode_ci

2、全局变量和mysqld配置选项

MySQL中的许多系统变量对应于mysqld的配置选项。它们共同影响MySQL服务器的行为和性能。

当MySQL服务器启动时,它会读取配置文件中的配置,这些配置选项的值会作为MySQL服务中某些系统变量的初始值。大多数情况下,配置文件中的选项名称和全局系统变量的名称相同。


也不是每个mysqld的配置选项都有与之对应的系统变量,这个可以查看MySQL的官方文档来确认;

官方文档:https://dev.mysql.com/doc/refman/5.7/en/server-option-variable-reference.html


文档说明:

  • Cmd-Line (Command-Line): 这些是可以在命令行上启动mysqld服务时使用的选项。

  • Option File: 这些选项可以在配置文件(如my.cnf或my.ini)中设置。

  • System Var (System Variable): 这些是MySQL服务器的系统变量,可以控制其行为和特性。

  • Status Var (Status Variable): 这些变量提供了有关MySQL服务器状态的信息。

  • Var Scope (Variable Scope): 这指的是变量的作用域。它可以是全局的(影响整个服务器)或会话的(仅影响当前连接的会话)。

  • Dynamic: 这指的是变量是否可以在运行时动态更改,而不需要重启服务器。


例如:

配置文件中通过 character_set_server 指定服务端的默认字符集,这个时候mysql中的character_set_server变量的初始值就是配置文件中指定的值。

修改Mysql配置文件的某个配置选项,需要重启mysqld进程才会生效,这个时候可以直接通过修改对应的全局变量来动态调整配置。

3、设置系统变量的方法

用户变量以 @符号 开头进行标识,系统变量用 两个@符号 进行标识。

SET @@VAR = VALUE

这种方式默认设置的是SESSION(会话)级别的系统变量,如果session级别的系统变量不存在就会报错。所以如果想设置GLOBAL(全局)级别的系统变量,可以添加GLOABL关键字设置。

SET GLOBAL @@VAR = VALUE

说明:

手动修改MySQL的系统变量值时,这些更改仅在当前MySQL服务的运行期间有效。

因为一旦MySQL服务重启,它会重新读取配置文件,会将所有系统变量重置为配置文件中指定的值,或者如果未在配置中明确指定,则重置为默认值。

标签:选项,变量,配置文件,mysqld,MySQL,服务器
From: https://www.cnblogs.com/heyongshen/p/17875532.html

相关文章

  • 虚拟机mysql
    importjava.sql.*;publicclassMysqltest{staticfinalStringDRIVER="com.mysql.jdbc.Driver";staticfinalStringDB="jdbc:mysql://192.168.88.161:3306/bigfly";//DatabaseauthstaticfinalStringUSER="root";......
  • python连接mysql数据库
    说明:1.如果你使用的是其他数据库,例如PostgreSQL,你可以使用psycopg2库来连接和获取数据库数据。使用方法类似,只需要根据你的实际情况修改连接参数和SQL语句即可。2.首先确保本地数据库可以查询到数据,比如:若没有登陆SVN,本地数据库无法查询数据,那么python代码也会执行失败 一、......
  • MySQL系列之读写分离架构——Atlas介绍、安装配置、Atlas功能测试、生产用户要求、Atl
    文章目录1.Atlas介绍2.安装配置3.Atlas功能测试4.生产用户要求5.Atlas基本管理6.自动分表7.关于读写分离建议1.Atlas介绍Atlas是由Qihoo360,Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy0.8.2版本的基础上,对其......
  • mysql和Oracle 查询某个时间之内的数据
    查询最近一个月的数据mysqlSELECTid,title,endtimefromclassroomwhereyears=2022anddate_sub(CURDATE(),interval1month)<endtime;DATE_SUB()函数从日期减去指定的时间间隔,本文是从当前时间减去一个月。CURDATE()函数表示当前年月日,NOW()函数表示当前年月......
  • MySQL选择题(四) 事件/触发器
    单选在MySQL中,关于触发器,以下说法正确的是:a.可以对临时表创建触发器b.对INFORMATION_SCHEMA或performance_schema中的表,可以创建触发器c.对于InnoDB表,即使触发器中的语句执行失败,当在触发操作是执行后执行语句时,作为触发条件的SQL也会成功执行。d.对于同一个表,可以定义......
  • 软件测试/人工智能|Python 变量解析:从基础概念到内存地址探究
    变量什么是变量?变量是在程序中用于存储数据的名称。它们可以存储各种类型的数据,比如数字、文本、列表、字典等等。变量类型在介绍变量时,可以提及Python中常见的变量类型,例如整数、浮点数、字符串、布尔值、列表、元组、字典等。如下所示:a=1b='muller'c='123'd=......
  • 科技云报道:AI+PaaS,中国云计算市场迎来新“变量”?
    科技云报道原创。没有小的市场,只有还没有被发现的大生意。随着企业数字化转型的逐级深入,市场需求进一步向PaaS和SaaS层进发,使之成为公有云服务市场增长的主要动力。根据IDC最新发布的报告显示,2022-2027五年间中国公有云市场年复合增长率将达到26.9%,其中PaaS(平台即服务)增速最快,为30.......
  • 宝塔安装MySQL无法远程连接【已解决】
    1,确保云服务器开放3306端口。2,宝塔开放3306端口确保MySQLroot用户(或者你要连接的用户)的权限是允许所有的人连接!如何查看?如果MySQL安装成功的话,在本地连接MySQL。mysql-uroot-p输入密码(root密码在这查看)usemysql;updateusersethost='%'whereuser='root......
  • MySQL部分函数
    单行函数数值函数基本函数函数用法ABS(x)返回x的绝对值SIGN(X)返回X的符号。正数返回1,负数返回-1,0返回0PI()返回圆周率的值CEIL(x),CEILING(x)返回大于或等于某个值的最小整数FLOOR(x)返回小于或等于某个值的最大整数LEAST(e1,e2,e3…)返回......
  • 安装mysql报错:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (
    @目录当前状态报错解决办法:当前状态目前已经启动好mysql服务:systemctlstartmysqldsystemctlstatusmysqld生成临时密码grep'temporarypassword'/var/log/mysqld.log报错出现了报错:ERROR1045(28000):Accessdeniedforuser'root'@'localhost'(usingpass......