本章我们主要包含两部分的内容:

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服务器模式及相关内置变量相关推荐

  1. unturned显示在服务器列表,unturned局域服务器模式设置

    unturned局域服务器模式设置 内容精选 换一换 介绍使用同一VPC内弹性云服务器ECS上的Java客户端连接Memcached实例的方法.已成功申请Memcached实例,且状态为"运 ...

  2. 局域网网站服务器dns设置,内网安装配置DNS服务器详解_实现局域网用域名访问...

    内网架设DNS服务器详解 适用环境: 局域网内用IIS建了一个网站,通过ip访问太麻烦,想在内部实现用域名访问 . http://192.168.1.107  是我建在内网的一个站 我们要实现的就是在 ...

  3. MySQL数据类型及sql模型及服务器变量

    myisam  不支持事物,表锁 .frm: 储存表的结构 .MYD: 储存数据,MYDATA的缩写 .MYI:  储存索引,MYIndex的缩写 innodb (每表一个表空间文件 ) 支持事物,支 ...

  4. 解决Docker容器内访问宿主机MySQL数据库服务器的问题

    解决Docker容器内访问宿主机MySQL数据库服务器的问题 参考文章: (1)解决Docker容器内访问宿主机MySQL数据库服务器的问题 (2)https://www.cnblogs.com/ga ...

  5. mysql索引缓存的内容_mysql服务器变量、缓存及索引

    服务器变量 注意:其中有些参数支持运行时修改,会立即生效:有些参数不支持,且只能通过修改配置文件,并重启服务器程序生效:有些参数作用域是全局的,且不可改变:有些可以为每个用户提供单独(会话)的设置. ...

  6. 容器宿主机数据库_解决Docker容器内访问宿主机MySQL数据库服务器的问题

    懒得描述太多,总归是解决了问题,方法简要记录如下,虽然简要,但是完整,一来纪念处理该问题耗费的大半天时间,二来本着共享精神帮助其他遇到该问题的哥们儿,当然这个方法并不一定能解决你们的问题,但是多少能提 ...

  7. mysql最大连接数合理值_MySQL服务器最大连接数怎么设置才合理[转]

    如果mysql 连接数据设置不合理可能会导致很小的流量mysql就提示MySQL: ERROR 1040: Too many connections错误了,那么要如何才算是合理设置mysql最大连接数 ...

  8. mysql 命令行访问_Mysql 命令行模式访问操作mysql数据库操作

    使用环境 在cmd模式下输入 mysql --version (查看mysql安装的版本). 完整的命令可以通过mysql --help来获取. 本测试使用的Mysql版本是mysql5, 本测试使用 ...

  9. MySQL5.7 Group Replication (MGR)--Mysql的组复制之多主模式

    MGR--Mysql的组复制之多主模式 以下测试在VMware环境: 操作系统:Centos 6.9 X86_64 数据库:Mysql 5.7 (mysql  Ver 14.14 Distrib 5. ...

最新文章

  1. linux 进入单用户模式修改root密码
  2. python 编程入门-python编程入门(第3版)
  3. 虚机如果要访问SAN中的多个LUN,如何实现高可用
  4. Java提高篇——单例模式
  5. 模拟分发扑克牌(python实现)
  6. 那些值得思考的PHP问题
  7. 将有序数组转换为二叉搜索树
  8. 思维导图软件下载与安装 记录xmind安装过程
  9. win7 / mysql-8.0.11-winx64 安装的测坑步骤
  10. c语言lua读文件,file-io – 在Lua中逐行读取文件
  11. HTML表单元素、表单控件
  12. 游戏软件测试用例编写范文,软件测试用例报告模板.doc
  13. 神州数码c语言笔试题,神州数码笔试题,神州数码笔试题.doc
  14. 论文心得:BatchNorm及其变体
  15. 【实用工具】【图像处理,超大图片识别,方案篇:化繁为简】
  16. 【idea基础知识】idea在merge时颜色不同的各个区块代表的意思
  17. 前端开发入门教程-CSS(一)
  18. win7系统如何添加计算机,教你win7系统电脑添加邮箱怎么添加
  19. Docker基础篇之快速上手
  20. win10 代理服务器出现问题 或者地址有误

热门文章

  1. python带参装饰器的改良版
  2. Linux命令行编辑快捷键
  3. BZOJ1050 [HAOI2006]旅行
  4. html5之web worker
  5. Apache Spark源码走读之4 -- DStream实时流数据处理
  6. iOS.UITableView.SectionIndex
  7. asp.net 强制性单一登陆现实
  8. Linux根文件系统结构再认识
  9. Design Compiler指南——施加设计约束
  10. get_metrology_object_measures获取测量区域和计量模型的计量对象的边缘位置结果