学习MySQL系列:3. MySQL系统变量

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 学习MySQL系列:3. MySQL系统变量

前言

还记得我们学习的配置项么?不管是从命令行配置,还是从配置文件中配置的,你是否好奇,我们是怎么知晓这个配置的,例如: 系统的字符集编码格式: character_set_server,以及客户端的userpassword等,这些变量是从哪儿来的呢? 这就是我们今天要学习的MySQL变量。来,我们今天就来学习下吧。



什么是MySQL系统变量

MySQL服务器在运行过程中,会使用许许多多的系统变量,每个系统变量都有其默认值,我们可以在配置文件的时候指定它,例如上一篇,我们介绍的系统的字符编码character_set_server。也可以在运行过程中,我们动态修改其系统变量值。其中系统变量又分为全局系统变量会话系统变量,前者在修改时需要超级权限才行,后者则不需要。



全局系统变量和会话系统变量关系


我们知道,系统变量区分全局和局部,那么这2者到底是什么关系呢?

我们在启动MySQL服务器的时候,会产生一个全局变量,这个变量来源于指定参数配置或者配置档,图示如下

image.png


启动数据库后,我们在登录数据库中,会产生新的会话变量,该会话变量是全局变量的副本。

image.png

我们在修改自身其会话变量的时候,不会影响其他会话变量,而我们在修改全局变量后,当前已经连接上来的会话会保持不变,新会话才会采取新的会话变量,例如:



查看系统变量


MySQL中,我们可以使用show variables,若结果太多,我们可以使用like进行过滤,如我么想获取datadir的路径,我们可以使用如下语句进行查询:

show variables like '%datadir%';


image.png


例如,我们还想查询一下我们所设置的charset,我们可以依葫芦画瓢,使用

show variables like '%charset%'


image.png



我们可以看到,我们character_set_server使用的是gbk


咦,可能你就要问了,我们之前不是介绍了系统变量有全局和会话之分么? 为什么查询的时候,没有区分呢,哎,别急,是这样的。我们默认使用show variables其实是查询的会话变量,完整命令为show session variables,只不过缩写为show variables。那么我们如何查询全局变量呢?


查询全局变量

show global variables;


查询会话变量

show session variables;


这样来说的话,你懂了么?



设置系统变量


我们知晓了系统变量的区别,那么我们如何设置呢,我们可以使用set来设置系统变量。

例如

设置会话系统变量

set session 变量名=值


设置全局系统变量

set global 变量名=值


我们来做个小案例,我们将局部会话变量的 character_set_server修改为utf8然后创建库。

命令

set session character_set_server="utf8";
show global variables like 'character_set_server';
show session variables like 'character_set_server';
create database pdudo_test123;
show create database pdudo_test123;


image.png

image.png

最后我们发现,其字符编码已经修改为了utf8



总结


在本篇学习中,我们知晓了MySQL有自己的系统变量,而又区分为 全局系统变量 和 会话系统变量,全局系统变量作用域是整个环境,而会话的话呢,是只针对目前的连接,所以全局系统变量在动态设置的时候需要有超级权限才行。 我们在设置系统变量的时候,有2种方式 第一种是在启动的时候添加参数,例如写到配置文件中,第二种是在运行中使用set命令进行修改。


好了,快动动小手指来试试吧。





相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
存储 关系型数据库 MySQL
|
1月前
|
SQL 存储 关系型数据库
【MySQL 数据库】11、学习 MySQL 中的【锁】
【MySQL 数据库】11、学习 MySQL 中的【锁】
76 0
|
存储 关系型数据库 MySQL
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL 数据库】4、MySQL 事务学习
【MySQL 数据库】4、MySQL 事务学习
44 0
|
18天前
|
SQL 存储 关系型数据库
6本值得推荐的MySQL学习书籍
本文是关于MySQL学习书籍的推荐,作者在DotNetGuide技术社区和微信公众号收到读者请求后,精选了6本值得阅读的MySQL书籍,包括《SQL学习指南(第3版)》、《MySQL是怎样使用的:快速入门MySQL》、《MySQL是怎样运行的:从根儿上理解MySQL》、《深入浅出MySQL:数据库开发、优化与管理维护(第3版)》以及《高性能MySQL(第4版)》和《MySQL技术内幕InnoDB存储引擎(第2版)》。此外,还有12本免费书籍的赠送活动,涵盖《SQL学习指南》、《MySQL是怎样使用的》等,赠书活动有效期至2024年4月9日。
|
23天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
|
3天前
|
存储 SQL 关系型数据库
MySQL学习手册(第一部分)
mysql日常使用记录
59 0
|
存储 SQL 关系型数据库
|
1月前
|
存储 SQL 关系型数据库
【MySQL 数据库】6、一篇文章学习【索引知识】,提高大数据量的查询效率【文末送书】
【MySQL 数据库】6、一篇文章学习【索引知识】,提高大数据量的查询效率【文末送书】
59 0
|
2月前
|
SQL 关系型数据库 MySQL
MySQL数据库学习(小白一文掌握Mysql)
MySQL数据库学习(小白一文掌握Mysql)
44 0