Maclean’s Oracle Database Tech Blog Archives
-
MySQL在Windows上的启动及停止
这一节会讨论在Windows上运行MySQL Server前,你应该检查的相应先决条件。这里同时会说到如何手工通过命令行模式来运行服务,或者作为一个Windows服务来自动启动运行。 3.3.1 Windows上MySQL服务启动的先决条件 由于MySQL的安装目录中包含了几个非常重要的子目录,因此我们应该在MySQL安装时,就明确了解MySQL安装在哪里。如果你在是通过MySQL Installer进行的安装,那么MySQL默认的安装目录为C:\Program Files\MySQL\MySQL Server 5.x。如果你使用noinstall归档压缩包进行安装,那么安装的路径就是你当时解压的位置。 在安装目录下,你会找到一个bin子目录,其包含了MySQL服务和客户端程序。而data子目录中则用于存放server对应的数据库。 在Windows上的MySQL安装,data目录会预先进行设定以备使用。例如,它会包含一个mysql目录以用于数据库mysql,这个数据库包含了授权表。data目录中也会包含一个test数据库目录以用于测试目的。在服务被安装后,你需要设置账户初始密码,而这些账号会被列在授权表中。 在MySQL的Windows分支版本相应bin目录中你可能会看到以下服务程序: mysqld作为Linux操作系统的标准服务(最新的Windows分支版本中也会使用mysqld),它包含了MyISAM和InnoDB存储引擎。 mysqld-nt和mysqld一样,不过它包含了对基于NT系统如Windows NT, 2000, XP和2003的命令管道支持。 mysqld-max和mysql-max-nt对应的mysql和mysql-nt一样,但包括了一些非max服务所有的其他一些存储引擎。 mysqld-debug包含了对调试的支持。通常情况下你不需要选择此类MySQL server来用于生产环境,因为它会需要更多的运行时资源,并占用更多内存。 通常分支版本中仅包含mysqld或mysqld-nt服务程序。 当你在Windows上启动MySQL,MySQL会认为你的默认安装路径为C:\mysql,当然实际上你可以将它装在任何位置,但如果你真的这么做了,你就必须在server启动时告知它对应的位置在哪里。一种方法是你建立一个配置文件,并在文件中定义好你的路径位置。在使用MySQL Installer进行安装时,过程中会启用配置精灵,通过以下步骤引导你进行基本或完整组件安装的设置并建立配置文件: 配置精灵会首先使用安装目录C:\Program Files\MySQL\MySQL Server 5.x并在其中建立一个名为ini的配置文件。配置文件包含了一个[mysqld]组,组中包括有一个basedir参数用于设置安装的目录: 1 2 [mysqld] basedir=”C:/Program Files/MySQL/MySQL Server 5.x” 请注意:配置文件中设置的Windows路径中使用斜杠”/”,而不是反斜杠”\”。 配置精灵会在安装server时将其注册为一个Window服务。其在进行注册时,其命令中会包含一个–defaults-file参数项来指定ini的文件位置: 1 mysqld —install MySQL —defaults–file=“C:\Program Files\MySQL\MySQL Server 5.x\my.ini” (其中–install参数后的MySQL为服务名,你可根据情况自行设定,下图中注册的服务名为MySQL56) 这样当服务启动后,MySQL Server会知道在哪里可以找配置文件,并从配置文件中获取安装目录的位置。 如果你使用配置精灵来安装MySQL,但又希望MySQL服务使用其他服务程序(非mysqld,如mysqld-max)来启动运行,那么你需要移除原有Windows服务,并使用其他服务名来对应进行服务注册。 …
-
MySQL 5.7 CREATE USER命令增强
在MySQL5.7之前,在使用CREATE USER命令时有以下多个限制: 无法设置授权插件并密码 无法禁用一个用户 无法设置用户资源限制 无法设置非默认密码的过期策略 无法使用SSL/x509 所有这些限制实际上都可以通过其它方法来得到实现,但通常你需要涉及到使用其它语句,如GRANT命令。 从MySQL 5.7.6开始,这些操作可以通过这个新增强的CREATE USER语法来进行实现。 密码及授权插件设置 从安全角度来说,这是最重要的部分,在使用建立用户账户的同时能够使用非默认的授权插件(如sha256_password)和非空密码设置: 1 2 mysql> CREATE USER dbdao@localhost IDENTIFIED WITH sha256_password BY ‘mysqlpassword’; Query OK, 0 rows affected (0.00 sec) 这里,我们可以使用CREATE USER … IDENTIFIED BY子句来设置密码,在建立用户时,不能强制建立的账户不使用空密码是一个非常大的安全问题。 禁用账号 MySQL团队注意到之前有许多大量关于避免终端用户可直接访问某些账户的需求。甚至在MySQL 5.6版本中实现了mysql_no_login授权插件来支持此类使用。现在有更好的方法了 – 只需要定义账号为锁定状态即可: 1 2 3 4 5 6 7 mysql> CREATE USER…
-
MySQL在Unix上的启动及停止
MySQL可以在许多Unix和Unix-like系统中运行,这些系统包括BSD Unix, System V Unix以及Linux的各种分支版本等。这节会阐述如何使得MySQL在这些平台上运行的通用步骤。主题包括了在运行服务前进行先决条件检查以及MySQL server的启动和停止等。 在Unix上,我们推荐使用一个明确的用户和组(而不是使用root)来进行MySQL Server的运行和管理,这样MySQL可以在相应权限下运行。在文中,我们假设所使用的用户和用户组都为mysql。 3.4.1 在Unix上MySQL Server启动的先决条件 尝试在Unix上运行MySQL之前,你应该先确认MySQL相关的组件都已经安装好了,且已经有一个MySQL登陆账号可用于管理和运行此服务。如果必要的话你也需要初始化对应数据目录。 在Unix上,预编译好的MySQL分发版以RPM文件或压缩tar文件(或其他类型)存在。RPM被用于Linux系统的安装。tar文件则可在用于更多平台。这些文件也是大家通常下载最多的文件类型。 由于分发版本中会分成多个不同RPM文件,因此MySQL RPM安装通常要求一个或多个RPM文件。其中最重要的文件为server程序安装文件和对client程序安装文件,所以做为最小安装的情况,你一般会将这两个都安装上。如果你想进行MySQL server的全组件安装,你就需要下载对应bundle组件包并解压,除了安装其中最基本的MySQL server RPM 外,将其下的其它所有RPM包都一并进行安装。 RPM的安装过程中会建立一个操作系统登陆用户以用于管理和运行MySQL服务,用户名和组名都为mysql。过程中也会安装所有相关文件,初始化数据目录,及安装已包含了初始MySQL账号的mysql数据库。之后安装会名为mysql的启动脚本注册到/etc/init.d目录中,并启动数据库。Server程序会被安装在/usr/sbin下,而数据目录则被建立在/var/lib/mysql中。 tar包发行版的安装很简单,仅通过解压即可。 例如,如果你下载的Linux发行版为mysql-5.6.25-linux-glibc2.5-x86_64.tar.gz,你可以将其解压至/usr/local下以建立mysql-5.6.25-linux-glibc2.5-x86_64的子目录,通常你可以在/usr/local下另建立一个软链接(symbolic link)以指向此目录,名字如mysql,用以方便访问。在本节中,我们假设之后Unix上的MySQL tar包安装目录路径为/usr/local/mysql。 建立软链接的好处,除了目录名更短之外,当你需要升级MySQL时,你可以很容易地将此软链接指向新版本MySQL安装目录(只需要删除后重建此软链接即可)。如使用以下命令: 1 2 # cd /usr/local # ln -s mysql-5.6.25-linux-glibc2.5-x86_64 /usr/local/mysql 由于tar包版本安装并不会自动建立运行服务的操作系统账户和相应数据目录。你必须建立系统登录账号和用户组并建立初始数据目录(默认情况下数据目录为/usr/local/mysql/data),在章节中,我们这里假设建立的账号和组都为mysql。 为了建立初始数据目录,首先跳转当前目录到安装目录并运行mysql_install_db脚本。对于tar包发行版,此脚本一般被放置在对应的scripts或bin(根据版本位置有一定变化)子目录中。命令运行如: 1 2 # cd /usr/local/mysql # scripts/mysql_install_db 为了确保所有被安装的目录文件对应的所有者属性正确,你可以使用mysql账户登录并运行。或者,以root运行此脚本同时使用–user=mysql项: 1 2 #…
-
MongoDB 3.0新增的压缩选项
MongoDB3.0对WiredTiger存储引擎引入了压缩功能。在本文中,我们将观察不同选项,并举例说明这个功能如何运行。由于情况因人而异,所以我们鼓励你测试自己的数据和应用程序。 为什么需要压缩? 每个人都知道存储很便宜对吧? 但是,有可能你添加数据的速度比存储价格下降的速度来得更快,你花费在存储上的净支出实际上正在上升。你的内部成本也可能需要包括管理等因素,因此它们的价格可能会比商品市场价格高出很多。换句话说,你仍然需要寻求新的方式以减少您对存储的需求。 磁盘存储的大小是一个需要考虑的因素,当然还有其他需要考虑的。磁盘I/ O延迟是由在旋转存储上寻道时间为主导。通过降低数据的大小,用更少的磁盘寻道检索一定量的数据是必要的,这样磁盘I / O吞吐量将得到改善。对于RAM而言,一些压缩格式可以不用解压在内存中的数据。在这样的情况下,更多的数据可以放在RAM中,从而提高了性能。 MongoDB的存储性能 还有两个关于存储的重要特性,影响空间在MongoDB中的使用:BSON和动态模式。 MongoDB存储数据在BSON,一种类似JSON文件的二进制编码(BSON支持其他数据类型,如日期,不同的数字类型,二进制类型)。 BSON能有效编码和解码,并且易于遍历。然而,BSON不压缩数据,所以有可能它的数据表示大于同等的JSON。 用户喜欢MongoDB的文档数据模型的一点是其动态schema。在大多数数据库中,模式(Schema)是在一个分类或系统表中集中进行描述和维护的。列名对所有行仅保存一次。这种方法对于空间是有效的,但它需要所有数据根据模式被构造。 MongoDB中目前还没有核心分类:每个文件是自述的。新字段可以被添加到一个文档,而不会影响其他文件,并且不用在核心分类中进行字段登记。 更大灵活性的代价是更大的应用空间。字段名在每个文档中被定义,在允许的情况下就使用较短的字段名。但是同样要注意不要太短 – 单字母字段名称或代码会使得字段名称很难理解和阅读,其数据也变得更难使用。 好在传统的模式不是有效利用空间的唯一方式。对于处理重复值比如字段名称,以及在文件中存储的大量数据,压缩也是很有效的方式。 没有万能的压缩方法 压缩很常见:图像(JPEG,GIF),音频(MP3),视频(MPEG),以及大多数Web服务器在使用gzip发送到浏览器之前,也会压缩网页。压缩算法已经存在了几十年,也有一些奖励创新的比赛。 压缩库依靠CPU和RAM来压缩和解压缩数据,而且每个都在压缩率,速度和资源利用率方面有不同的权衡。例如,一个当今最好的压缩库在文本方面可以压缩1GB的维基百科数据到124MB,相对于gzip的323MB,但它需要大约近3000倍的时间和30000倍的内存来这样做。根据您的数据和应用程序,某个库的使用可能会对于你的需求比别人更有效。 MongoDB3.0引入WiredTiger,支持压缩一个新的存储引擎。 WiredTiger使用页面管理磁盘I / O。每个页面都包含很多BSON文件。页面被写入磁盘时就被默认压缩,当在磁盘中被读入高速缓存时它们就被解压。 压缩的基本概念之一是重复值 – 确切的值以及形式 – 可以一次以压缩的格式被存储,减少了空间的总量。较大的数据单元倾向于更有效地压缩,因为有更多重复值。通过在页面级别压缩 – 通常称为数据块压缩 – WiredTiger可以更有效地压缩数据。 WiredTiger支持多种压缩库。你可以决定哪个选项是最适合你的集合水平。这是一个重要的选择,你的访问模式和数据可能在集合间大不相同。例如,如果你使用GridFS的存储较大的文件,如图片和视频,MongoDB自动把大文件分成许多较小的“块”,当需要的时候再重新组合。 GridFS的实施维护两个集合:fs.files,包含大文件的元数据和其相关的块;以及fs.chunks,包含大数据分成的255KB的块。对于图像和视频,压缩可能会有益于fs.files集合,但在fs.chunks的数据可能已经被压缩,因此它对于这个集合可能需要禁用压缩。 MongoDB3.0中的压缩选项 在MongoDB 3.0中,WiredTiger为集合提供三个压缩选项: 无压缩 Snappy(默认启用) – 很不错的压缩,有效利用资源…
-
MongoDB归档及压缩工具
本文地址:https://www.askmac.cn/archives/archiving-and-compression-in-mongodb-tools.html 介绍 我在MongoDB World 2015做的演讲“Putting the Go in MongoDB”,重点是关于MongoDB工具的重写,从C ++到Go,这在可用性以及性能方面得到了一些改进,但是这里我只简要的说两个方面的新功能,(planned for the 3.2 release) – 归档和压缩。 在本文中,我将对mongodump和mongorestore提供更详细的归档和压缩特性说明,并探索使用这些特性的可行用例。 概述 一个通常目的的归档一般由一个或多个文件组成。这样例子如磁带归档格式(tar),其中包含按顺序组成的一个或多个文件。归档在执行进程间通信的应用程序中尤其有用,例如,你可以通过远程服务器进行目录的tarball压缩,然后通过SSH,传送到到本机上进行解压: 1 ssh source.server.com tar c sourceDirectory | tar x 由于归档以顺序的方式创建,接收端将能按顺序接收到发送端按顺序发来的数据。 在3.0中,我们增加了在MongoDB中并发执行备份和恢复多个集合的能力,这可以让你执行备份时,更加充分地利用磁盘I / O。 结果,写入mongodump的备份并不一定以顺序的方式接收。 同样,mongorestore同时读取还原操作集合,它的读取指令也并非是序列性的。 通用归档格式,如tar,只支持连续的文件归档打包。mongodump和mongorestore利用这些备份格式,将得到一个不可接受的性能退化, 由于所有集合的数据将不得不被按顺序写入和读出。为了支持这些工具的并发行为,我们研发了一个特殊的通用备份格式,支持非并发文件的写入。 这个新的归档特性极大了提高了备份和还原操作的效率。 背景 为了按上下文情况进行备份,我们考虑一下你们通常是如何创建备份的。比如,假设你有一个“country”的数据库,其中含有两个集合-“nigeria” and “austria”, 你可能会这样操作: 1 mongodump —db country 上面的指令读取“country”数据库的所有集合,…
-
使用Partition分区来提升您的MySQL数据库性能
使用Partition分区来提升您的MySQL数据库性能 By Antoinette O’Sullivan-Oracle 你可以通过使用分区来进一步提升你的MySQL数据库性能,将特定表行分成多个行集。可以在很多不同场景通过分区获得益处,如提升大表效率: 将数据分成很多小组以提升查询效率 符合系统文件大小限制 对维护和删除等行操作进行加速 要了解更多关于分区和其他主要议题,欢迎大家来参加MySQL数据库管理员培训课程。 你将通过以下形式来获得5天由教员引导的课程: 按需培训:在注册后24小时内即可开始课程,按照讲义材料并收看培训视屏学习,学习后你可以自己预定时间来Oracle实验室环境获取手把手教学体验。 在线虚拟教学:无需至Oracle培训地,你只需要在线参加线上班级课程即可。从一系列教学计划中选择对应时区的在线培训即可,你也可以选择不同时区不同语言的在线培训课程,一切如您所需。 实地培训:直接到Oracle教育培训中心参加课程,以下为亚洲区的培训计划安排: ASIA Location Date Delivery Language Shanghai, China 6 July 2015 Simplified Chinese Causeway Bay, Hong Kong 11 May 2015 English Bangalore, India 18 May 2015 English Seoul, Korea 6 April 2015 Korean Kuala Lumpur, Malaysia 17 August 2015 English Petaling Jaya,…
-
关于MongoDB认证DBA Associate考试
From Mongo University, 下次开考时间: Start: 2015年4月2日17:00 End: 2015年4月28日17:00 关于此考试 MongoDB认证DBA Associate级考试是为了具有MongoDB管理知识和技术的相关人员设立的。我们那些了解MongoDB相关基础知识并且具有一定专业管理经验的操作专家来进行认证。下面我们会详细说明对于此认证所需要具备的知识和技能: 考试细节 考试将基于MongoDB 2.6版本进行。 考试没有前提条件。任何人可以参与此认证考试,不过我们仍推荐大家进行一下自我学习或者参加M102和M202课程。考生也可以使用其他推荐学习准备材料。 MongoDB认证考试提供在线网页监考解决方案。 完成计算机设备检查以保证你的系统满足必要的硬件软件需要以完成考试。 为了完成考试,你必须和你的监考方预约考试期。当然,一旦你注册了此考试,你就会收到相关的时间安排指导信息。 你可以在考试期内的任何时间完成考试,早晚都行。 一旦开考,考生将有90分钟来完成考试。 对于不正确的回答不会倒扣分数。 考试成绩将基于回答正确的题目的数量以及有专业评估作出的整体考试难度评判决定。 考题类型为多选题,请将你认为正确的答案进行选择即可。 在考试结束后,考试结果会在之后3周内得出。我们需要时间回顾考试时给出的问题并计算考试成绩。 请注意考试费用中不会包括免费重考费用。 MongoDB所需知识: 原理及特性:性能,JSON, BSON, 容错(fault tolerance),灾难恢复,水平缩放(horizontal scaling)以及Mongo shell CRUD: 新建,读,更新和删除操作 索引: 单键, 复合, 多键索引, 构成及性能 聚合(Aggregation): 管道符, 操作符, 内存使用,排序(sort)、跳过(skip)和限制(limit) 复制(Replication): 相关设置,oplog概念,写相关,枚举,故障转移及多个数据中心的部署 分片(sharding):组件,何时分片,平衡,分片key,和哈希分片key 应用管理: 数据文件,日志,认证及授权 服务器管理:性能分析,诊断调试,运维,备份和恢复 所需通用IT知识 数据库概念基础 系统编程基础 基本的JavaScript编程能力 考试规则 为了通过考试认证,测试者必须了解一下规则。视频,语音和计算机屏幕活动将会在考试时被记录获取并被考官回放检查。…
-
关于MySQL认证
关于MySQL认证 关于MySQL认证 By Denis Truffaut MySQL是一个数据库管理系统。其认证被用于测试考生对于所有MySQL相关的存储和查询技术的知识掌握情况。 当前可在Oracle官网中可查到MySQL认证有以下两种: Oracle Certified Professional, MySQL 5.6 Database Administrator Oracle Certified Professional, MySQL 5.6 Developer 相关认证需要通过的考试: MySQL 5.6数据库管理OCP:1Z0-883 MySQL 5.6开发员OCP:1Z0-882 值得注意的是下列旧认证将在2014年3月15日后过期, 如果你已经拥有以下认证,那么你需要考虑是否参与认证升级: Oracle Certified Associate, MySQL 5 Oracle Certified Expert, MySQL 5.1 Cluster Database Administrator Oracle Certified Professional, MySQL 5 Database Administrator Oracle Certified Professional, MySQL 5 Developer 对于MySQL认证考试的反馈…
-
MySQL的配置
除了通过命令行来进行MySQL参数项配置之外,你还可以将设置写入一个配置文件中来实现设置。标准的MySQL客户端程序会在启动时查找此类配置文件并使用文件中的相应设置项。通过写配置文件可以大大减少你运维工作时间,因为你不必在每次调用程序的时候通过命令来重新定义这些参数项。 默认情况下,MySQL server会在运行时使用其预编译的值作为其配置项值。如果这些默认值在实际环境中是不适合的,你可以在server运行时给予不同的运行时参数值: 有几个配置项定义了MySQL重要目录和文件的位置信息。如,Windows下,默认预编译的安装目录(base directory)为C:\mysql。如果你系统将MySQL安装在其他地方,你就必须通过使用 –basedir参数设置告知服务正确的目录位置,否则服务无法启动。同样的,如果你并非使用安装目录下的data子目录作为你的数据存放目录的话,你就必须使用 –datadir项设置来告诉服务正确的位置。 有些配置项对MySQL server写哪些日志进行了控制。 有些配置项被用于覆盖调整server中与性能相关的内部变量值,如控制最大同时连接数的配置项,控制buffer和cache大小的配置项等等。 一些存储引擎在预编译时的设置为启用或禁用状态。如,服务程序已经编译启用了InnoDB支持(默认为启用),假如你并不使用InnoDB表的话,你可以设置 –skip-innodb项来节省内存(注意,由于现在InnoDB已成为标准配置,因此此参数在MySQL 5.7版本及其以后版本中被废用,这里仅作为例子进行说明)。你也可以设置默认存储引擎进行设置修改。 有些配置项也可对InnoDB表空间进行进行设置。在未显式配置的情况下,如 –innodb_autoextend_increment, — innodb_page_size等,这些值也可以根据你的情况进行调整。 你可以通过定义运行时配置项在服务启动时改变其表现。通常,这种设置可以通过命令行和配置文件来达到你的目的。(例外的是,如果你是以Window Service服务运行MySQL服务的话,你可能不能通过命令行来进行配置设置,你必须在启动时使用 –defaults-file 参数项,将配置设置于配置文件中。请依据对应版本而定。) 为了了解哪些配置项是server支持的,我们可以手工调用以下命令: 1 # mysqld –verbose –help 在帮助中所看到的那些配置项都可以使用mysqld命令时同时进行设置使用。当然,更常见的是将它们写入配置文件中,这都多方面原因: 通过将配置项写入文件中,你可以不必每次在启动MySQL服务时将配置参数定义在命令中。这不仅方便,也可以避免太多复杂配置项造成的输入错误。 如果你是通过server启动脚本来调用服务的话,你就不能通过在命令中加入配置项来进行启动。因为此脚本仅有参数值start和stop,这里你不需使用配置文件来进行启动设置。 如果你在配置文件中列出有所有你所需的服务配置,你可以从文件中快速方便得了解你所进行的设置。 标准MySQL服务会在几个位置查找配置文件。它会使用那些在相应存放位置的配置文件,但是如果它找不到的话,服务也照样正常启动,不会报错。在Windows和Unix上,对应的标准配置文件有所不同。 在Windows上,程序会在目录(例如,C:\Winodws或C:\WinNT目录)中按以下顺序查找配置文件:my.ini,然后是my.cnf。 按目录查找的顺序如下:最上面的文件先读。 更多信息可阅读:http://dev.mysql.com/doc/refman/5.7/en/option-files.html 注意:如果你使用配置精灵进行的安装(即将MySQL server注册为一个Windows服务),那么服务就不会按照标准配置文件目录顺序进行查找,它仅会找MySQL安装目录下的my.ini文件。当然如果你在注册服务时使用 –defaults-file指定过配置文件,那么服务只会找你指定位置的那份配置文件。因此,如果你需要进行配置修改,请将设置放在服务会读的那个配置文件中。 在Unix上,所查找的配置文件则包括两个通用配置文件,/etc/my.cnf和$MYSQL_HOME/my.cnf。第二个文件仅在MYSQL_HOME环境变量已设置好的情况下才会被使用。通常你可以设置它作为MySQL安装目录。(如果在启动服务时此参数未设置,则mysql_safe脚本在执行时会尝试设置此MYSQL_HOME环境变量。) Unix配置文件的查找顺序中还包括了~/.my.cnf,配置文件可被放置在当前启动MySQL的用户HOME目录下。不过,由于此文件是一个特定于用户的文件,因此不太适合存放作为服务配置参数。(正常在你以root用户且使用 –user=mysql调用mysql服务时,服务会读取的特定用户配置文件取决于你调用服务的那个登陆用户,这可能会导致不一致的配置信息被使用。) 按目录查找的顺序如下:最上面的文件先读。 更多信息可阅读:http://dev.mysql.com/doc/refman/5.7/en/option-files.html 在配置文件中定义服务启动配置项时,使用[mysqld]组。如果文件不存在,那么你可以使用编辑器新建一个平文件。建立和修改文件需要对应的写入权限。MySQL服务本身仅需要读取权限即可;它会读取其中信息,但并不会新建或改动文件。 以下例子中,我们例举了一些使用配置文件进行设置的方法: 如果在的MySQL安装在Windows上,服务假设默认安装目录为C:\mysql且数据子目录名为data。然而你希望将MySQL安装在其它地方,如:…
-
MySQL的SQL模式
本文地址:https://www.askmac.cn/archives/mysql-sql-mode.html 3.6.1 设置SQL模式 MySQL Server中的许多操作特性可以通过设置SQL模式(SQL mode)来进行配置。模式包含了可选值,其每个值控制了查询处理的某个方面。经过恰当的设置,服务就能按指导对输入数据采取严格或宽容的处理,启用或禁用对SQL一致性有关的操作,或者提供对其它数据库更好的兼容性。这一节将讨论如何设置SQL模式。 默认情况下,SQL模式值为空值,因此没有特定的限制或一致性行为要求被启用。独立的客户端按他们自己的需要来配置SQL模式,不过也可以通过在服务启动时使用 –sql-mode项来设置默认的SQL模式。你可能在运行数据库时需要某个模式来更小心地处理无效数据或建立MySQL用户账号。例如,如果你启用TRADITIONAL模式,MySQL Server会如其它数据库一样对输入的数据进行强制约束,而不会采取宽容态度。它这种模式不会允许未设置密码的新账号被建立。你可以通过配置文件来启用TRADITIONAL SQL模式: 1 2 [mysqld] sql–mode=TRADITIONAL 你可以在启动mysqld时使用 –sql-mode=”mode_value”来设置SQL模式,或者可以通过使用SET命令来设置sql_mode变量来实现: 1 SET [SESSION|GLOBAL] sql_mode=’mode_value’ 设置的值可以是空值,或是由一个或多个模式使用逗号组成的混合模式。如果是空值或两个以上模式值,你需要用单引号括起来。尽管SQL模式值在设置时总是使用大写,但是实际上其对大小写不敏感,以下是一些例子: 清空SQL模式值: SET sql_mode=’’; 使用单个模式值对SQL模式进行设置: SET sql_mode=ANSI_QUOTES;SET sql_mode=’TRADITIONAL’; 使用多个模式值对SQL模式进行设置: SET sql_mode=’IGNORE_SPACE,ANSI_QUOTES’; 如果需要检查当前sql_mode设置,可以使用以下命令: 1 mysql> SELECT @@sql_mode; 1 2 mysql> set sql_mode=’traditional’; mysql> select @@sql_mode\G 3.6.2…