MySQL的发行版本类型

Mysql技术学习QQ群:146959374

MySQL可用于多种操作系统,其包括Windows和Unix操作平台。除非特别说明,这里”Unix”一般指包括Linux和其他Unix-like操作系统。

 

你可以通过使用已经包含有MySQL预编译程序的二进制发行版来进行MySQL安装,也可以自己动手编译源文件发行版来完成MySQL的安装。这里我们会对你可选择的各类MySQL发行版进行一下描述。dbdao.com

 

3.1.1 MySQL二进制发行版(Binary Distribution)

在Windows上,你可以从以下类型的预编译二进制发行版进行安装:

一个基础发行版(MySQL Installer MSI, GA Release),包含了MySQL所需安装的最通用组件及相关配置精灵。这是一个推荐大多数用户使用的版本。

一个包含了所有MySQL安装相关文件的非安装发行版(Zip Archive, GA Release),其中不含有MySQL installer及配置精灵。

你可以使用Installer选择最基本MySQL组件的安装或进行完整安装。默认,MySQL 5.x会被安装在%ProgramFiles%\MySQL\MySQL Server 5.x下,一般%ProgramFiles%值为C:\Program Files。而非安装发行版则仅是一个Zip压缩包,安装时,你只需要解压并移至你所希望的位置即可。

 

在Unix上,你可以选择以下类型的二进制版本:

  • RPM包可用于Linux系统。这些文件可通过使用rpm命令进行安装。你可以使用rpm -qpl rpm_file来查看RPM软件包中所包含的安装文件。m31_ch3.1_rpm_install_wm_18f9ee9e01cab58dae39b540d029ff242504d607
  • tar包文件可用于其他各种Unix和Unix-like系统。为了安装此类发行版,你可以通过使用tar命令将tar包解压至你希望安装的目录即可。
还有许多其他Unix和Linux发行版特定安装包。你可以访问MySQL网站下载页来了解可用的安装包:http://www.mysql.com/downloads/

注意:安装后的启动及服务配置会在本章稍后进行说明。dbdao.com

 

使用二进制发行版有这样几个好处。除了明显的,你不需要经历整个建立编译过程外,一个最大的好处是使用MySQL二进制安装文件比你自己去建立文件更高效。

  • MySQL团队有大量编译器使用的选择配置经验,这有助于产生最优化的二进制文件。
  • 在多数情况下,MySQL团队使用商业编译器进行编译,相比于使用通用编译器,这样可以获得更高质量代码。
  • 在一些情况下,MySQL团队在编译时会使用比一般标准操作系统供应商所提供的库文件更好的库文件。例如,在Linux系统上,MySQL会使用特定的C库文件以允许更大数量的并行连接。其它一些情况,使用特定库文件来临时解决供应商库文件中的存在的bug问题等。

 

3.1.2 MySQL源发行版

你也可以通过编译源发行版来建立MySQL。劈开使用预编译发行版进行安装所带来的好处,你可能仍然有理由选择自己编译MySQL:

  • 你的操作平台没有对应可用的二进制发行版,你不得不选择自己通过源文件来建立MySQL。
  • 你需要启用一个在预编译发行版中没有的功能,如全面调试支持。或你可能希望关闭一个你不需要的特性,以降低server对内存的使用。例如,你可以禁用可选的存储引擎,或仅编译那些你需要的字符集等。
  • 二进制发行版仅会在正式版中提供下载,而最新的开发版本则仅提供源码版本。如果你希望使用当前最新的源码版本,则你必须进行编译。

你可以将源发行版安装在你所需的位置上。其默认安装位置为/usr/local/mysql。

如果你最终决定通过源文件来建立MySQL,请阅读MySQL参考手册(MySQL Reference Manual)在线文档, 其中包含了对特定平台安装的相关注意信息。

by 汪伟华,dbdao.com

MySQL的安装

Mysql技术学习QQ群:146959374

MySQL数据库服务的推荐安装方法是通过MySQL网站直接下载安装。这种方法在一些不同的平台上都有支持,仅在不同的平台上的安装细节上略有不同。然而,其主要步骤都一样。请注意你需要管理好权限设置以完成此安装。

 

对于在Windows和Linux操作系统上的安装步骤如下:dbdao.com

MySQL ServerWindows操作系统上的安装

1)访问MySQL官网下载页http://dev.mysql.com/downloads/

2)找到对应主题: MySQL on Windows -> MySQL Installer

3)下载my-installer-community MSI版本

4)双击下载的MSI文件,启动MySQL Installer, 选择Custom安装模式后,选择对应MySQL Server组件。

5)Next后按提示进行一步步安装,你需要提供相应root密码。

6)默认安装目录为:C:\Program Files\MySQL\MySQL Server 5.x

7)完成安装时会有提示信息告知。dbdao.com

 

MySQL ServerLinux操作系统上的安装:

1)访问MySQL官网下载页http://dev.mysql.com/downloads/

2)找到对应主题MySQL Community Downloads -> MySQL Community Server (GPL)

3)找到对应操作系统并下载最新二进制tar包(这里举例Linux-Generic), 如:

mysql-5.6.25-linux-glibc2.5-x86_64.tar.gz

4)将tar包解压至/usr/local目录下(如果tar包在/tmp目录下)

# cd /usr/local
# tar -zxvf /tmp/mysql-5.6.25-linux-glibc2.5-x86_64.tar.gz

5)对目录建立软链接

# ln -s mysql-5.6.25-linux-glibc2.5-x86_64 mysql

6)安装系统表

# cd mysql
# scripts/mysql_install_db

7)建立mysql系统用户及用户组

# groupadd mysql
# useradd -g mysql mysql

8)修改data目录所有者

# chown -R mysql:mysql data

9)可选操作,将启动脚本拷贝到/etc/init.d下

# cp support-files/mysql.server /etc/init.d/mysql.server

 

3.2.1 时区表的数据导入

MySQL的安装过程中会在mysql数据库(/data/mysql)下建立一组时区表(对应表文件time_zone*):

  • 在Windows上,这些表是作为预先初始化的mysql数据库中一部分存在的。
  • 在Unix上,这些表是在RPM安装中自动执行或tar包解压后手工执行mysql_install_db脚本时被建立的。dbdao.com

 

MySQL Server使用时区表来实现对如’Europe/Warsaw’等命名时区的支持。然而,时区表在建立后为空表,并没有数据。这意味着默认情况下,命名时区不可用。为了启用此功能,你必须对这些表导入数据。这是一个可选配置过程,除非你进行配置,否则时区支持将被限制为SYSTEM时区且时区偏移值也将受当前系统限制如’+08:00’。

在操作系统上有其自有的时区文件,最好是使用它们来导入MySQL时区表,以保证系统和MySQL时区基于相同的信息。许多Unix系统上有这些文件,它们常被放置在/usr/share/zoneinfo目录中。对于这些系统,可以使用mysql_tzinfo_to_sql程序来将这些文件内容转换为SQL语句并导入到MySQL表中。如果文件在/usr/share/zoneinfo目录中,使用命令如下:

# mysql_tzinfo_to_sql /usr/share/zoneinfo |mysql -uroot mysql

有些系统中没有时区文件,如Windows和HP-UX。对于这中情况,MySQL在http://dev.mysql.com/downloads/timezones.html上提供了对应版本的时区表文件(MyISAM表文件)。你可以对应版本下载后在你的mysql数据库中替换空的时区表文件即可。停止MySQL Server,将解压后的文件拷贝至/data/mysql数据库目录中,重启服务。

by  汪伟华,dbdao.com

MySQL在Windows上的启动及停止

dbDao 百度贴吧:http://tieba.baidu.com/dbdao

Mysql技术学习QQ群:146959374

这一节会讨论在Windows上运行MySQL Server前,你应该检查的相应先决条件。这里同时会说到如何手工通过命令行模式来运行服务,或者作为一个Windows服务来自动启动运行。(dbdao.com 数据岛)

 

3.3.1 WindowsMySQL服务启动的先决条件

由于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目录中你可能会看到以下服务程序:(dbdao.com 数据岛)

  • mysqld作为Linux操作系统的标准服务(最新的Windows分支版本中也会使用mysqld),它包含了MyISAM和InnoDB存储引擎。
  • mysqld-ntmysqld一样,不过它包含了对基于NT系统如Windows NT, 2000, XP和2003的命令管道支持。
  • mysqld-maxmysql-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参数用于设置安装的目录:

    请注意:配置文件中设置的Windows路径中使用斜杠”/”,而不是反斜杠”\”

  • 配置精灵会在安装server时将其注册为一个Window服务。其在进行注册时,其命令中会包含一个--defaults-file参数项来指定ini的文件位置:

    (其中–install参数后的MySQL为服务名,你可根据情况自行设定,下图中注册的服务名为MySQL56)

这样当服务启动后,MySQL Server会知道在哪里可以找配置文件,并从配置文件中获取安装目录的位置。

 

如果你使用配置精灵来安装MySQL,但又希望MySQL服务使用其他服务程序(非mysqld,如mysqld-max)来启动运行,那么你需要移除原有Windows服务,并使用其他服务名来对应进行服务注册。(dbdao.com 数据岛)

 

3.3.2 Windows上手动运行MySQL Server

在Windows命令行窗口中手工使用命令来运行MySQL,你需要通过命令行转至MySQL安装目录的bin子目录下,并调用服务命令:

** 你可以将bin目录路径整个添加到Windows系统环境变量path中,这样就可以直接调用命令而不必频繁进行跳转目录操作。

默认情况下,Windows会将报错信息写入data子目录下的host_name.err日志文件中(host_name为MySQL服务主机名)。如果MySQL Server未能正常启动,你需要检查报错日志文件已分析报错原因。当然,你也可以通过使用以下命令在MySQL启动时在Windows命令行窗口中显示诊断输出进行查看分析:

其他一些server参数也可以在命令中或在配置文件中进行设置。

 

当你在命令行窗口中调用MySQL服务程序后,命令行将不会再显示任何提示直至服务退出。关闭窗口会导致服务被中止,因此,如果你希望在命令窗口中运行其他MySQL程序,你需要在server运行时打开一个新的命令窗口,在新窗口中执行命令操作。

如果需要关闭MySQL服务,可以在命令行中使用mysqladmin命令实现:

你也可以通过Windows任务管理器来关闭MySQL,不过你应该尽量避免这么操作;因为任务管理器会强行中止MySQL server的运行,这将导致server没有机会进行干净地关闭。结果可能导致数据讹误并需要进行表修复。

 

3.3.3 Windows服务的方式运行MySQL

之前我们讲述了如何手工运行MySQL server。其他方法,则可以在安装时将MySQL server注册为一个Window服务,并设置为【自动】。这样,MySQL server就会在Windows启动或关闭时进行自启动及自动关闭。

 

如果你在安装MySQL时使用了MySQL Installer,你可能已经使用了配置精灵建立起了MySQL的Windows服务并启动了服务。否则,你将需要自己来进行服务注册,为了完成注册,你需要转到MySQL安装路径的bin子目录下。之后在调用mysqld命令时使用 –install参数:

** 这里命令使用时,对应的bin目录路径已经存入了path环境变量中了。

 

你也可以将所需的启动参数写入配置文件中,并在注册服务中告知server在启动时读取此配置文件。如使用C:\server-opts.ini文件作为服务配置文件:

通过--defaults-file设置,MySQL服务在启动时读取对应文件中的[mysqld]配置组,由于设置了--defaults-file因此,它会忽略默认位置的配置文件中的设置。(dbdao.com 数据岛)

命令中 –install设置并不会真正启动server。它仅仅是告诉Windows将其作为一个服务来进行处理,并当Windows启动或关闭时,同时自动启动mysqld或关闭它。你也可以通过以下命令来手动启动或关闭服务,通过此操作来开启MySQL或关闭它:

这里的MySQL为注册的Windows服务名。

可以使用一个图形界面来控制此MySQL服务,你可以使用Windows服务管理器。

列出所有服务,找到对应MySQL的服务,进行启动或关闭操作。

 

你也可以使用mysqladmin shutdown命令来进行手工关闭。

 

如果服务不能正常启动,检查data子目录中的报错日志或直接使用mysqld启动,同时带上–console参数,这样报错信息就会直接出现在命令行窗口中了。

 

如果需要移除MySQL服务,请先确保MySQL已经被关闭,然后使用以下命令:

以上命令默认MySQL服务名为MySQL。如果Windows对应服务名不同,则你可以使用以下命令显示提供服务名:

如果你不是使用服务名MySQL来进行安装,且在服务注册时也未指定--defaults-file参数项,那么MySQL服务将会查找默认位置的标准配置文件, 除了读取其中[mysqld]组的设置之外,还会读取[service_name]组中的参数设置。(dbdao.com 数据岛)

 

除了以上这些方法外来启动关闭MySQL之外,你也可以使用MySQL Workbench等集成工具来实现此操作。如果你在使用MySQL Installer安装MySQL的时候同时安装有MySQL Notifier,你也可以使用这个小工具来进行MySQL的启动和关闭控制:

by 汪伟华, dbdao.com

MySQL 5.7 CREATE USER命令增强

dbDao 百度贴吧:http://tieba.baidu.com/dbdao

Mysql技术学习QQ群:146959374

在MySQL5.7之前,在使用CREATE USER命令时有以下多个限制:

  • 无法设置授权插件并密码
  • 无法禁用一个用户
  • 无法设置用户资源限制
  • 无法设置非默认密码的过期策略
  • 无法使用SSL/x509
所有这些限制实际上都可以通过其它方法来得到实现,但通常你需要涉及到使用其它语句,如GRANT命令。
从MySQL 5.7.6开始,这些操作可以通过这个新增强的CREATE USER语法来进行实现。(dbdao.com 数据岛)

 

密码及授权插件设置

 

从安全角度来说,这是最重要的部分,在使用建立用户账户的同时能够使用非默认的授权插件(如sha256_password)和非空密码设置:
这里,我们可以使用CREATE USER ... IDENTIFIED BY子句来设置密码,在建立用户时,不能强制建立的账户不使用空密码是一个非常大的安全问题。

 

禁用账号

 

MySQL团队注意到之前有许多大量关于避免终端用户可直接访问某些账户的需求。甚至在MySQL 5.6版本中实现了mysql_no_login授权插件来支持此类使用。现在有更好的方法了 – 只需要定义账号为锁定状态即可:(dbdao.com 数据岛)

 

其他新建账号语句项

 

还有一些对CREAT USER命令的其他方便的增强,如建立一个新账号并定义一个非标准密码过期策略:
同时,在建立一个新账号时,你不再需要其他很多命令来实现SSL安全通信:
你也能在同一句建立账号的语句中限制资源使用:(dbdao.com 数据岛)
通过使用这些语法,用户可以大大简化用户建立过程及脚本命令行数量。同时我们也需要感谢Satish和所有带来这些功能增强的人!
如果你对相关的新语法感兴趣,可查阅MySQL最新文档。
MySQL 5.7关于CREATE USER命令文档链接:

 

by dbdao.com 数据岛

MySQL在Unix上的启动及停止

dbDao 百度贴吧:http://tieba.baidu.com/dbdao

Mysql技术学习QQ群:146959374

 

MySQL可以在许多Unix和Unix-like系统中运行,这些系统包括BSD Unix, System V Unix以及Linux的各种分支版本等。这节会阐述如何使得MySQL在这些平台上运行的通用步骤。主题包括了在运行服务前进行先决条件检查以及MySQL server的启动和停止等。

 

在Unix上,我们推荐使用一个明确的用户和组(而不是使用root)来进行MySQL Server的运行和管理,这样MySQL可以在相应权限下运行。在文中,我们假设所使用的用户和用户组都为mysql。

 

3.4.1 UnixMySQL 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包都一并进行安装。【dbdao.com 数据岛

 

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安装目录(只需要删除后重建此软链接即可)。如使用以下命令:

由于tar包版本安装并不会自动建立运行服务的操作系统账户和相应数据目录。你必须建立系统登录账号和用户组并建立初始数据目录(默认情况下数据目录为/usr/local/mysql/data),在章节中,我们这里假设建立的账号和组都为mysql。 为了建立初始数据目录,首先跳转当前目录到安装目录并运行mysql_install_db脚本。对于tar包发行版,此脚本一般被放置在对应的scripts或bin(根据版本位置有一定变化)子目录中。命令运行如:

 为了确保所有被安装的目录文件对应的所有者属性正确,你可以使用mysql账户登录并运行。或者,以root运行此脚本同时使用--user=mysql项:

mysql_install_db脚本建立数据目录并初始化mysql数据库(根据版本不同也会相应初始化test或sys等数据库)。如果你不运行此脚本,当你运行MySQL时会发现无法找到mysql数据库相应文件的报错,如:Can’t find file: ./host.frm。

请注意:在MySQL 5.7.6之后,mysql_install_db将不再使用,改用mysqld --initialize命令。

 

使用tar包发行版,你还需要安装一个启动脚本。【dbdao.com 数据岛

 

在过去版本中,不管你如何在Unix上安装MySQL(通过RPM文件或tar包文件),初始的MySQL root账号都没有密码。在服务器启动后,你需要手工建立密码。但是在5.6和5.7之后,通过RPM文件的MySQL Linux平台安装会调用mysql_secure_installation脚本以生成root随机密码,并将此随机密码存放在.mysql_secret文件中(此文件会为存放在系统环境变量HOME指定的目录下)。而当前最新5.7.6的tar包安装中,在执行数据库安装命令后会被要求执行:

其中mysqld命令的--initialize项会对root生成一个随机密码并以[warning]的提示信息显示。
更多最新版本安装细节,可访问:http://dev.mysql.com/doc/refman/5.7/en/binary-installation.html

 

3.4.2 Unix上选用一种MySQL Server启动方法

MySQL服务在Unix上可以通过以下几种方式启动

  • 你可以手工调用mysqld。除非为了调试目的,通常不会使用此方法。如果你通过这个方法调用服务,相关报错信息会默认在命令行terminal窗口中进行显示,而不是写入报错日志中。
  • 使用mysqld_safe Shell脚本来调用mysqld。脚本会建立报错日志(error log),启动mysqld并进行监控。如果mysqld异常中止,mysqld_safe会尝试重启它。
  • 使用mysql.server Shell脚本来调用mysqld_safe。它在mysqld_safe外又包了一层,此脚本用于哪些使用System V run-level目录的Linux和Solaris系统。
  • mysqld_multi是一个Perl脚本,其目的是为为了更容易地管理单个主机上的多个MySQL Servers。它能启动和停止服务,或报告server的运行状态。

 

为了让MySQL服务能在系统启动时自动运行,你需要在系统上安装适合的启动脚本:

  • 在类似BSD的Unix系统中,通常可以通过使用系统启动脚本来调用mysqld_safe,如/etc目录下的local启动脚本。

在Linux和System V Unix类等在/etc/init.d下有run-level目录的系统,可以使用mysql.server脚本。如果你在Linux上进行RPM安装,安装命令会自动将mysql.server脚本以mysql为名安装在的相应运行级下。它可以配以start或stop参数通过手工调用进行服务的启动或关闭:

 操作系统在启动和关闭过程中会自动执行以上命令。【dbdao.com 数据岛

如果服务未能正常启动,那么请查看报错日志。Unix上的默认报错日志名为host_name.err,且放于数据目录中,这里host_name为你服务器主机名。

你可以使用以下方法中的一种来手工关闭MySQL server

  • 使用mysqladmin程序的shutdown参数命令。它以一个客户端形式来连接服务并关闭本地或远程的MySQL服务。
  • 使用mysql.server脚本并配以stop参数来关闭本地服务。
  • 使用mysqld_multi脚本的stop命令来关闭其所管理的任意一个MySQL服务。实际操作中此脚本会调用mysqladmin程序。

mysqld_safe脚本并没有服务关闭能力。你可以使用mysqladmin shutdown来进行服务关闭。请注意如果你使用kill -9命令来强行中止mysqld,mysqld_safe将会探测到mysqld的异常中止并重新启动它。当然,你可以先杀掉mysqld_safe,然后再中止mysqld,但是最好还是使用mysqladmin shutdown,此命令用于完成一个正常(干净)的服务关闭。

 

在MySQL 5.6之前,除了使用mysql_multi脚本来管理多个MySQL数据库之外,我们还可以使用MySQL实例管理器 – MySQL Instance Manager (IM)来进行多个MySQL实例的启停及监控,由于功能相同,因此mysqlmananger在MySQL 5.6之后就被移除了,这里我们对此工具仅作为知识知道即可,不再做深入展开。

对于mysql_multi更多的配置细节,我们可以查看官方MySQL 5.7最新版本文档(最后由Tim Young提供了随主机启停后的自启动及关闭脚本供参考):

http://dev.mysql.com/doc/refman/5.7/en/mysqld-multi.html

by 汪伟华,dbdao.com 数据岛

dbDao 关于MySQL认证

dbDao 关于MySQL认证

 

关于MySQL认证
By Denis Truffaut

MySQL是一个数据库管理系统。其认证被用于测试考生对于所有MySQL相关的存储和查询技术的知识掌握情况。

当前可在Oracle官网中可查到MySQL认证有以下两种 dbdao.com:

  • 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认证考试的反馈

当写这篇文章时,我才通过MySQL5 开发员认证。然而,我认为获取这些认证需要对相关知识有比较高的掌握度。

OCP5D

考试的题目都不简单,建议大家看题,并在考试时按顺序回答问题。注意,你可以对没把握的题先标记起来(使用【Mark】)然后在之后回到标记的题目。在最后回顾时,考试会提供对所有未回答或被标记问题的总览,在得到你的最后确认后,考生再按下【Finish】按钮完成考试。

最后,为了合理控制你的考试时间,在屏幕右上角有一个计时器方便你查看所用时间。dbdao.com

考试资源准备

考试中所需文档资源可以从下面找到:

OCP认证:请注意通过规则

每个考试需耗时90分钟,约包含70道题目,这意味着每题77秒的考虑时间。

你需要至少获得总考分的60%来通过考试。不过具体是否是此比例,你需要查看Oracle官网中的OCP相关考试说明来了解。

如果未能通过考试,你需要过14天后方能尝试申请重考。

OCP5certifation

MySQL OCP:总结 dbdao.com

为什么尝试此认证:

  • 相关费用(约1077RMB),性价比高
  • 一个考验自己知识掌握度的好方法
  • 一个高级别认证
  • 一个证明你是否专业的证据
  • 在求职市场上的一个快速认可
  • 全球知名品牌: Oracle

MySQL的配置

本文地址:http://www.askmaclean.com/archives/mysql-configuration.html

dbDao 百度贴吧:http://tieba.baidu.com/dbdao

Mysql技术学习QQ群:146959374

除了通过命令行来进行MySQL参数项配置之外,你还可以将设置写入一个配置文件中来实现设置。标准的MySQL客户端程序会在启动时查找此类配置文件并使用文件中的相应设置项。通过写配置文件可以大大减少你运维工作时间,因为你不必在每次调用程序的时候通过命令来重新定义这些参数项。

dbdao.com 数据岛

默认情况下,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支持的,我们可以手工调用以下命令:

在帮助中所看到的那些配置项都可以使用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环境变量。)【dbdao.com 数据岛

 

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安装在其它地方,如: E:\mysql,你就必须使用 --basedir参数项告知服务对应路径。配置文件中的配置项前不用写双横杠【--】,你如下在配置文件中设置安装目录:
    • 如果你将E:\mysql下的data子目录作为数据目录,那basedir值已近足够了。不过如果你希望使用不同的数据目录路径,你就必须设置 --datadir项,如:
    • 请注意,在这种情况下,你也需要将原数据目录的拷贝到新对应位置D:\mysql-data上。如果不这样的话,当启动服务时,由于找不到配置文件对应的数据目录,会导致服务启动失败。
    • 对于配置参数中设置的Windows路径名,你可以使用斜杠【/】或者【\\】。例如,定义basedir值为E:\mysql,你可以以以下两种格式进行设置:
    • 如果路径名包含空格,你可以用双引号括起来,如:
    • 在Windows上,默认共享内存(shared-memory)连接方式是未启用的。为了使用此连接方式,使用以下配置项:

      类似,mysqld-nt和mysql-max-nt服务程序都在Windows平台上支持命名管道(named-pipe)连接方式,但它们都并未启用。为了启用这种连接方式,可使用以下配置项:

    • 为了启用日志,可以使用配置项启用你所希望的类型。以下配置项启用了通用查询日志,二进制日志以及长时间查询日志(以MySQL v5.7版本为例):
    • 为了定义默认存储引擎为InnoDB,可以使用 --default-storage-engine项:
    • 配置文件中也可设置许多MySQL服务系统变量值。例如,为了将最大客户端连接数从默认151提升至201,并增加MyISAM的键缓存(key cache)从8MB到128MB,你需要设置max_connections和key_buffer_size变量:

MySQL版本在v5.6.8之前包含有几个模板配置文件。在Windows中,文件名如my-small.ini和my-large.ini。这些被安装时同时建立在安装目录中。在Unix中,它们名为my-small.cnf和my-large.cnf。在my-default.cnf v5.6.8之后,这些文件被my-default.cnf文件代替。

 

你可以通过拷贝模板文件到标准配置文件路径上,将其文件名修改为指定所用配置文件名。不过在使用模板文件时,你需要确保能读懂文件中的意思,理解其中配置项设置的效果并作出相应修改。

 

3.5.1 使用 --safe-updates 配置项

 

配置文件中的配置项按组进行组织,每组配置项前都有一个以中括号括起来的组名(如:[group-name])。通常情况下,组名为所使用配置项对应的程序名。例如, [mysql]和[mysqldump]组对应的配置项被用于mysql和mysqldump命令工具。而特别的组名如[client]则被用于所有客户端程序。一般[client]组被设置连接配置参数,因为不管你使用哪个客户端程序都连接到此相同server上。【dbdao.com 数据岛

 

在配置文件中进行设置时,请将使用于命令行时的参数前的双横杠去掉。如果配置项设置一个值,可与允许在等号【=】两边有空格,不过在用于命令行时,这是不允许的。以下为一个配置文件例子:

注意:除非服务由root用户启动,否则端口号必须为1024或比之更大的值。

 

在上面这个例子中,[client]组定义了主机名,且设定C/S访问协议需使用压缩模式进行发送。组中的配置项应用于所有标准的客户端。而[mysql]组仅应用于客户端程序mysql。[mysql]组的设置要求了mysql命令应该使用 --safe-updates项。(mysql命令程序将会同时使用[client]和[mysql]组中的配置,因此总共有3个配置项被mysql使用。)

 

3.5.2 配置文件位置

 

配置文件的位置取决于你的操作系统。标准配置文件如:

  • 在Windows上,一般MySQL会按以下顺序查找配置文件: my.ini和cnf。而MSI安装精灵会将配置文件放置在服务注册设定时所指定的位置下)。
  • 在Unix平台上,文件/etc/my.cnf将作为全局配置文件被所有用户使用。你也可以在你的HOME目录中建立用户自己定义的cnf文件。如果两个都存在,全局文件会被先读取。
  • 当然,MySQL的命令行程序会在查找$HOME目录下的配置文件前,先在$MYSQL_HOME目录下查找配置文件(例如,../MySQL Server 5.6)。

 

MySQL(客户端)程序也可以对多个配置文件进行访问。程序会查找每个标准配置文件并在文件存在时进行读取。如果文件不存在也不会报错。

如果需要使用某个配置文件,你可以使用编辑器建立一个平文件进行编辑。

为了建立或修改此文件,你必须有相应的写权限。客户端程序仅需读权限即可。【dbdao.com 数据岛

为了告知程序读取指定的配置文件,使用命令行启动时可使用以下参数项(在命令中必须是第一个参数项):

配置项 注释
--defaults-file=file_name 使用指定位置的配置文件
--defaults-extra-file=file_name 使用指定位置的额外配置文件
--no-defaults 使程序不使用配置文件

例如,使用mysql工具命令时使用C:\my-opts配置文件而不使用标准配置文件:

在配置文件中,你还可以使用 !include!includedir指令:

  • 如果某行中出现 !include file_name,那就会从这句指令开始跳转到对应file_name进行读取,读完后再调回原先的配置文件继续之前的读取。
  • 如果某行中出现 !includedir dir_name,那么类似的会从这句指令开始跳转到对应dir_name目录并查找尾缀为.cnf的文件(Windows平台上为.cnf和.ini)进行配置读取,在读完后回到之前跳出的配置文件完成余下的读取工作。

 

如果一个配置项被定义多次,不管是在同一个文件中还是在不同的多个配置文件中,配置项的值取最后设置的那个。

注意:在命令行中设置的配置项会最终覆盖配置文件读取的配置项的值。

by  汪伟华,dbdao.com 数据岛

MySQL的SQL模式

本文地址:http://www.askmaclean.com/archives/mysql-sql-mode.html

dbDao 百度贴吧:http://tieba.baidu.com/dbdao

Mysql技术学习QQ群:146959374

3.6.1 设置SQL模式

 

MySQL Server中的许多操作特性可以通过设置SQL模式(SQL mode)来进行配置。模式包含了可选值,其每个值控制了查询处理的某个方面。经过恰当的设置,服务就能按指导对输入数据采取严格或宽容的处理,启用或禁用对SQL一致性有关的操作,或者提供对其它数据库更好的兼容性。这一节将讨论如何设置SQL模式。

 

默认情况下,SQL模式值为空值,因此没有特定的限制或一致性行为要求被启用。独立的客户端按他们自己的需要来配置SQL模式,不过也可以通过在服务启动时使用 --sql-mode项来设置默认的SQL模式。你可能在运行数据库时需要某个模式来更小心地处理无效数据或建立MySQL用户账号。例如,如果你启用TRADITIONAL模式,MySQL Server会如其它数据库一样对输入的数据进行强制约束,而不会采取宽容态度。它这种模式不会允许未设置密码的新账号被建立。你可以通过配置文件来启用TRADITIONAL SQL模式:

你可以在启动mysqld时使用 --sql-mode=”mode_value”来设置SQL模式,或者可以通过使用SET命令来设置sql_mode变量来实现:

设置的值可以是空值,或是由一个或多个模式使用逗号组成的混合模式。如果是空值或两个以上模式值,你需要用单引号括起来。尽管SQL模式值在设置时总是使用大写,但是实际上其对大小写不敏感,以下是一些例子:【dbdao.com 数据岛

  • 清空SQL模式值:
SET sql_mode=’’;
  • 使用单个模式值对SQL模式进行设置:
SET sql_mode=ANSI_QUOTES;SET sql_mode=’TRADITIONAL’;
  • 使用多个模式值对SQL模式进行设置:
SET sql_mode=’IGNORE_SPACE,ANSI_QUOTES’;

 

如果需要检查当前sql_mode设置,可以使用以下命令:

3.6.2 SQL模式值

 

以下列出了对一些通用模式值的简单描述:

  • ANSI_QUOTES

此模式将导致双引号【”】被用于作为标识符引用字符,而不能用于作为字符串引用字符。

  • IGNORE_SPACE

默认情况下,功能函数和括号之间不能有空格。启用此模式后,服务会无视功能后的空格。这将允许功能函数和括号间有空格,但这有可能导致有些功能被认作为保留字。

  • ERROR_FOR_DIVISION_BY_ZERO

默认,被0除后所得返回结果为NULL。启用此模式后,在插入表数据的内容中,如果存在除以0,将会生成警告,如果同时也启用了严格模式,则会返回错误。(在MySQL 5.7.4以后,此模式被合并入STRICT_ALL_TABLES,STRICT_TRANS_TABLES模式中)

  • STRICT_TRANS_TABLES, STRICT_ALL_TABLES

这些模式值启用了【严格模式(strict mode)】,它对数据库输入可接受的值进行了某些严格限定。默认,MySQL会对于某些遗漏的值,超出范围,或奇怪的值采取宽容处理。启用严格模式将造成这些值在录入时被报错处理。

STRICT_TRANS_TABLES 启用了对所有事务表的严格模式,而STRICT_ALL_TABLES启用了对所有表的严格模式。【dbdao.com 数据岛

  • TRADITIONAL

这是一个复合模式,它在启用严格模式的同时还加入了其它一些输入数据的采纳限制。

  • ANSI

这也是一个复合模式,启用它会导致MySQL Server更符合ANSI标准。也就是说,其表现行为更像标准SQL,如其模式中含有ANSI_QUOTES(之前提到的)和PIPES_AS_CONCAT,使用【||】来作为字符串连接符,而不是作为逻辑或操作。

 

注意: 官方文档手册中列出所有可用的SQL模式值,如需查看MySQL5.7相关模式值,可访问:

http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html

by 汪伟华,dbdao.com 数据岛

沪公网安备 31010802001379号

TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569