mysql内置的变量,MySQL服务器模式及相关内置变量
本章我们主要包含两部分的内容:
MySQL服务器模式
MySQL内置变量
1. MySQL服务器模式
不同的MySQL客户端可以通过不同的模式操作MySQL Server。DBA可以设置一个全局模式,而每个应用程序可以根据需要为相应的会话设置不同的模式。
MySQL操作模式会影响到SQL的语法和相应的SQL语句的校验。
1.1 设置SQL模式
默认情况下SQL的模式是NO_ENGINE_SUBSTITUTION。如果要在MySQL Server启动的时候就设置好相应的SQL模式的话,可以使用--sql-mode=命令行选项来进行设置,也可以在MySQL配置文件中通过sql-mode=来进行配置。是由一系列由空格分隔的不同的模式组成。如果要清除SQL模式,则只需要在启动时传递--sql-mode=""或者在配置文件中配置sql-mode=""。
如果需要在运行时更改SQL模式,那么可以设置全局与会话 sql_mode系统变量:
SET GLOBAL sql_mode = 'modes';
SET SESSION sql_mode = 'modes';
对于设置全局变量,需要有SUPER权限,并且会影响到之后连接的所有客户端。对于设置会话变量,则只会影响到当前客户端。每个客户端都可以改变该会话的sql_mode。
可以通过如下命令来获取当前全局及会话sql_mode:
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;
1.2 最重要的SQL模式
SQL有很多模式,下面我们介绍几种常用的重要的SQL模式:
ANSI: 该模式会改变相应的语法和操作行为,以使最接近标准的SQL。它是一种特殊的组合模式(combination modes)。
STRICT_TRANS_TABLES: 假如一个值并不能插入到一个“事务表”中,那么中断该语句的执行。
TRANDITIONAL: 使MySQL接近于传统的SQL数据库系统。简单的描述即为“在插入错误的值到一列时直接返回错误,而不是警告”。
2. 获取服务器元数据
MySQL有很多元数据,这里我们列出几个常用的:
SELECT VERSION(): 服务器版本信息
SELECT DATABASE(): 当前数据库名(或者返回为NULL)
SELECT USER(): 当前用户名
SHOW STATUS: 服务器状态
SHOW VARIABLES: 获取当前会话的配置变量
3. 修改MySQL系统变量
下面以设置MySQL 系统变量wait_timeout为例。
3.1 设置全局变量
1) 修改参数文件,然后重启MySQL
# vi /etc/my.cnf
[mysqld]
wait_timeout=10
# service mysqld restart
此种方法太过生硬,并且要重启MySQL,一般不推荐。
2) 在命令行通过SET来设置,然后再修改参数文件
如果要修改全局变量,必须要显示指定GLOBAL或者@@global.,同时必须要有SUPER权限:
mysql> SET GLOBAL wait_timeout=10;
or
mysql> set @@global.wait_timeout=10;
然后通过下面的命令查看设置是否成功:
然后查看设置是否成功:
mysql> SELECT @@global.wait_timeout=10;
or
mysql> SHOW GLOBAL variables like 'wait_timeout';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 10 |
+---------------+-------+
如果查询时使用的是SHOW VARIABLES的话,会发现设置并没有生效,除非重新登录再查看。这是因为使用SHOW VARIABLES的话就等同于使用SHOW SESSION VARIABLES,查询的是会话变量,只有使用SHOW GLOBAL VARIABLES查询的才是全局变量。如果仅仅想修改会话变量的话,可以使用类似SET wait_timeout=10;或SET SESSION wait_timeout=10;`这样的语法。
当前只修改了正在运行的MySQL实例参数,但下次重启mysqld又会回到默认值,所以别忘了修改参数文件:
# vi /etc/my.cnf
[mysqld]
wait_timeout=10
3.2 修改会话变量
如果要修改会话变量值,可以指定SESSION或者LOCAL关键字,或者通过@@session、@@local、@@限定符, 又或者不加任何关键字与限定符。例如:
SET SESSION wait_timeout = 10;
or
SET LOCAL wait_timeout = 10;
or
SET @@session.wait_timeout = 10;
or
SET @@local.wait_timeout = 10;
or
SET @@wait_timetout = 10;
or
SET wait_timeout = 10;
然后查看设置是否成功:
mysql> select @@wait_timeout;
or
mysql> select @@session.wait_timeout;
or
mysql> select @@local.wait_timeout;
or
mysql> show variables like 'wait_timeout';
or
mysql> show local variables like 'wait_timeout';
or
mysql> show session variables like 'wait_timeout';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 10 |
+---------------+-------+
另外,如果要将一个全局系统变量设置为MySQL编译时的默认值,或者将一个session系统变量设置为当前的全局值,可以将该变量的值设置为DEFAULT。例如:
SET @@session.max_join_size = DEFAULT;
SET @@session.max_join_size = @@global.max_join_size;
[参看]:
mysql内置的变量,MySQL服务器模式及相关内置变量相关推荐
- unturned显示在服务器列表,unturned局域服务器模式设置
unturned局域服务器模式设置 内容精选 换一换 介绍使用同一VPC内弹性云服务器ECS上的Java客户端连接Memcached实例的方法.已成功申请Memcached实例,且状态为"运 ...
- 局域网网站服务器dns设置,内网安装配置DNS服务器详解_实现局域网用域名访问...
内网架设DNS服务器详解 适用环境: 局域网内用IIS建了一个网站,通过ip访问太麻烦,想在内部实现用域名访问 . http://192.168.1.107 是我建在内网的一个站 我们要实现的就是在 ...
- MySQL数据类型及sql模型及服务器变量
myisam 不支持事物,表锁 .frm: 储存表的结构 .MYD: 储存数据,MYDATA的缩写 .MYI: 储存索引,MYIndex的缩写 innodb (每表一个表空间文件 ) 支持事物,支 ...
- 解决Docker容器内访问宿主机MySQL数据库服务器的问题
解决Docker容器内访问宿主机MySQL数据库服务器的问题 参考文章: (1)解决Docker容器内访问宿主机MySQL数据库服务器的问题 (2)https://www.cnblogs.com/ga ...
- mysql索引缓存的内容_mysql服务器变量、缓存及索引
服务器变量 注意:其中有些参数支持运行时修改,会立即生效:有些参数不支持,且只能通过修改配置文件,并重启服务器程序生效:有些参数作用域是全局的,且不可改变:有些可以为每个用户提供单独(会话)的设置. ...
- 容器宿主机数据库_解决Docker容器内访问宿主机MySQL数据库服务器的问题
懒得描述太多,总归是解决了问题,方法简要记录如下,虽然简要,但是完整,一来纪念处理该问题耗费的大半天时间,二来本着共享精神帮助其他遇到该问题的哥们儿,当然这个方法并不一定能解决你们的问题,但是多少能提 ...
- mysql最大连接数合理值_MySQL服务器最大连接数怎么设置才合理[转]
如果mysql 连接数据设置不合理可能会导致很小的流量mysql就提示MySQL: ERROR 1040: Too many connections错误了,那么要如何才算是合理设置mysql最大连接数 ...
- mysql 命令行访问_Mysql 命令行模式访问操作mysql数据库操作
使用环境 在cmd模式下输入 mysql --version (查看mysql安装的版本). 完整的命令可以通过mysql --help来获取. 本测试使用的Mysql版本是mysql5, 本测试使用 ...
- MySQL5.7 Group Replication (MGR)--Mysql的组复制之多主模式
MGR--Mysql的组复制之多主模式 以下测试在VMware环境: 操作系统:Centos 6.9 X86_64 数据库:Mysql 5.7 (mysql Ver 14.14 Distrib 5. ...
最新文章
- linux 进入单用户模式修改root密码
- python 编程入门-python编程入门(第3版)
- 虚机如果要访问SAN中的多个LUN,如何实现高可用
- Java提高篇——单例模式
- 模拟分发扑克牌(python实现)
- 那些值得思考的PHP问题
- 将有序数组转换为二叉搜索树
- 思维导图软件下载与安装 记录xmind安装过程
- win7 / mysql-8.0.11-winx64 安装的测坑步骤
- c语言lua读文件,file-io – 在Lua中逐行读取文件
- HTML表单元素、表单控件
- 游戏软件测试用例编写范文,软件测试用例报告模板.doc
- 神州数码c语言笔试题,神州数码笔试题,神州数码笔试题.doc
- 论文心得:BatchNorm及其变体
- 【实用工具】【图像处理,超大图片识别,方案篇:化繁为简】
- 【idea基础知识】idea在merge时颜色不同的各个区块代表的意思
- 前端开发入门教程-CSS(一)
- win7系统如何添加计算机,教你win7系统电脑添加邮箱怎么添加
- Docker基础篇之快速上手
- win10 代理服务器出现问题 或者地址有误
热门文章
- python带参装饰器的改良版
- Linux命令行编辑快捷键
- BZOJ1050 [HAOI2006]旅行
- html5之web worker
- Apache Spark源码走读之4 -- DStream实时流数据处理
- iOS.UITableView.SectionIndex
- asp.net 强制性单一登陆现实
- Linux根文件系统结构再认识
- Design Compiler指南——施加设计约束
- get_metrology_object_measures获取测量区域和计量模型的计量对象的边缘位置结果