第1章 安装与配置——初识MySQL
本章视频教学录像:37分钟
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16日被Sun公司收购。而2009年,Sun又被Oracle收购。由于其占用空间小、速度快、总体拥有成本低,尤其是开放源码这一特点,目前MySQL被广泛地应用在Internet上的中小型网站中。MySQL的官方网站的网址是:www.mysql.com。通过本章的学习,读者能够掌握MySQL的安装过程,以及了解如何配置MySQL。
1.1 MySQL的特性
本节视频教学录像: 4分钟
MySQL由瑞典MySQL AB公司开发,目前属于OracIe公司。在Web应用方面,MySQL是最好的关系数据库管理系统(ReIationaI Database Management System, RDBMS)应用软件之一。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,由于其占用空间小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。总的来说,它主要有以下特性。
(1)使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。
(2)支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NoveIINetware、OpenBSD、OS/2 Wrap、SoIaris、Windows等多种操作系统。
(3)为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、PerI、PHP、EiffeI、Ruby, .NET和TcI等。
(4)支持多线程,充分利用CPU资源。
(5)优化的SQL查询算法,可有效地提高查询速度。
(6)既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库嵌入到其他的软件中。
(7)提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。
(8)提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
(9)提供用于管理、检查、优化数据库操作的管理工具。
(10)支持大型的数据库,可以处理拥有上千万条记录的大型数据库。
(11)支持多种存储引擎。
(12)MySQL是开源的,所以用户不需要支付额外的费用。
(13)MySQL使用标准的SQL数据语言形式。
(14)MySQL对PHP有很好的支持,PHP是目前最流行的Web开发语言之一。
(15)MySQL是可以定制的,采用了GPL协议,用户可以修改源码来开发自己的MySQL系统。
(16)在线DDL/更改功能,数据架构支持动态应用程序和开发人员灵活性。
(17)复制全局事务标识,可支持自我修复式集群。
(18)复制无崩溃从机,可提高可用性。
(19)复制多线程从机,可提高性能。
目前针对不同用户,MySQL提供了2个不同的版本。
(1)MySQL Community Server:社区版,该版本完全免费,但是官方不提供技术支持。
(2)MySQL Enterprise Server:企业版,它能够为企业提供高性价比的数据仓库应用,支持ACID事务处理,提供完整的提交、回滚、崩溃恢复和行级锁定功能。但是该版本需付费使用,官方提供电话及文档等技术支持。
1.2 安装MySQL
本节视频教学录像:14分钟
MySQL是全世界最流行的开源数据库软件之一,因其代码自由、最终用户可免费使用,首先在互联网行业得到应用。在过去十几年间,MySQL在全球普及,但若想使用MySQL作为数据库开发一款优秀的软件,首先要知道如何安装MySQL,本节将主要介绍MySQL在Windows 7和Linux环境下的安装。
1.2.1 开源软件的特点
开源(Open-Source),即开放源码,它被定义为源码可以被公众使用的软件,并且此软件的使用、修改和分发也不受许可证的限制。开源软件具有以下特点。
1.降低风险
拥有源代码使客户可以控制那些他们的业务所赖以生存的工具。当一个开源产品的开发者提高价格,增加了客户难以接收的限制,或者使用了一些使客户不满意的方法,另一个不同的组织将使用该源代码开发新的产品以解决原来机构的问题。客户也能自己维护或找别人改进它以达到自己的要求。客户控制软件,这在传统私有软件模式下是闻所未闻的事情。
2.质量更有保障
一些研究显示开源软件与别的可用商业软件相比,在可靠性上具有极大的优势。更加有效的开发模式、更多的独立同行对代码和设计的双重审查以及大部分作者对自己作品的极大荣誉感,都对其优良的质量有所贡献,一些公司甚至给予发现Bug者以物质奖励。
3.透明
私有软件有很多“阴暗的死角”,隐藏着许多Bug。源码对于查错和理解产品工作原理是很重要的。在大的软件公司,只有极少数人能接触到源码,而这些能接触源码的人通常用户都无法直接接触。而能接触源码对于修补安全漏洞也是非常重要的。
4.剪裁
开放源码给用户极大自由,使他们能够按照自己的业务需求定制软件。大型组织能从即使很小的定制行为中削减大量开支和人力成本。用户的挑错和改进反过来对可以促进产生更加标准的开放源码软件包。这在传统的私有软件开发中是不可能得到的。
5.有利的版权许可和价格
定义为开放源码使软件在版权许可方面比私有软件具有更大的灵活性。这可以大大削减安装所需的花费和时间,对那些采购过程费时费力的机构更加有利。它也能在安装软件时为用户带来更大的自由度。
1.2.2 在Windows系统环境下的安装
1.下载
首先从MySQL官网(http://www.mysql.com/downloads/mysql/)下载安装程序,本例中使用的是64位Windows版本(mysql-installer-community-V5.6.21.1.msi)。消费者根据实际情况下载合适的版本。
2.安装
(1)双击运行“mysql-installer-community-V5.6.21.1.msi”, MySQL安装向导启动。
(2)接受许可,并单击“Next”,进入安装类型选择页面。
(3)选择安装类型,安装类型共有5种,各项含义为:“Developer Default”是默认安装类型;“Server only”是仅作为服务器;“Client only”是仅作为客户端;“Full”是完全安装;“Custom”是自定义安装类型。我们选择“Custom”。
(4)选择安装组件,选中左侧列表显示的是可用的全部组件,右侧列表显示的是被选中将要安装的组件,可以通过向左或向右的箭头添加或删除需要安装的组件。作为初学者可能并不知道将来会用到哪些组件,可以按下图所示,选择安装所有组件。
(5)安装条件检查,选择好自己需要的组件,单击“Next”进入安装条件检查页面。根据选择的安装类型,会需要安装一些框架(Framework)。
选择需要安装的框架,单击“Execute”进入到框架安装页面,如下图所示。
(6)框架安装完成后,单击“Next”进入安装页面。
(7)开始安装,单击“Execute”,安装完成如下图所示。
(8)确认配置信息,单击“Next”。
(9)进行服务器配置型选择。“Developer Machine”选项代表典型个人桌面工作站,在3种类型中,占用最少的内存;“Server Machine”选项代表服务器,MySQL服务器可以同其他应用程序一起运行,例如FTP、E-mail和Web服务器,将MySQL服务器配置成使用适当比例的系统资源,占用内存在3种类型中居中;“ Dedicated MySQL Server Machine”选项代表只运行MySQL服务的服务器,假定没有运行其他应用程序,将MySQL服务器配置成占用机器全部有效的内存。作为初学者,选择“Developer Machine”(开发者机器)已经足够了,这样占用系统的资源不会很多,默认端口3306也可不做修改,若需修改可以直接在此处修改,但要保证修改的端口号没有被占用,设置完成后,单击“Next”。
(10)设置管理员密码。如下图所示,选择“Add User”,同时可以创建用户,这里出于对安全性考虑,不添加新用户。
(11)设置系统服务器名称。可以根据自己的需要进行名称设置,这里选择使用默认名称。另外,可以选择是否在系统启动的同时自动启动MySQL数据库服务器,这里按默认设置,单击“Next”。
(12)申请服务器配置,执行对服务器配置信息的更改,单击“Execute”。
完成之后界面如下图所示。
(13)安装完成,勾选中“Start MySQL Workbench after Setup”,可对是否成功安装进行测试,单击“Finish”。
1.2.3 在Linux系统环境下的安装
1.下载MySQL-5.6.23-1.el7.x86_64.rpm-bundle.tar
下载页面地址:http://dev.mysql.com/downloads/mysql/,此处选择“Red Hat Enterprise Linux 7 / Oracle Linux 6(x86, 32-bit), RPM Bundle”下载,下载至/root/mysql/目录下,下载文件名为“MySQL-5.6.23-1.el7.x86_64.rpm-bundle.tar”。
2.解压tar包
cd /mysql/Downloads/ tar -xvf MySQL-5.6.23-1.el7.x86_64.rpm-bundle.tar
3.以RPM方式安装MySQL
在RHEL系统中,必须先安装“MySQL-shared-compat-5.6.23-1.el7.x86_64.rpm”兼容包,然后才能安装Server和Client,否则安装时会出错。
yum instaII MySQL-shared-compat-5.6.23-1.eI7.x86_64.rpm # RHEL兼容包 yum instaII MySQL-server-5.6.23-1.eI7.x86_64.rpm # MySQL服务端程序 yum instaII MySQL-cIient-5.6.23-1.eI7.x86_64.rpm # MySQL客户端程序 yum instaII MySQL-deveI-5.6.23-1.eI7.x86_64.rpm # MySQL的库和头文件 yum instaII MySQL-shared-5.6.23-1.eI7.x86_64.rpm # MySQL的共享库
4.配置MySQL登录密码
cat /root/.mysqI_secret # 获取MySQL安装时生成的随机密码 service mysqI start # 启动MySQL服务 mysqI -uroot -p # 进入MySQL,使用之前获取的随机密码 SET PASSWORD FOR 'root'@'IocaIhost' = PASSWORD('123456'); # 在MySQL命令行中设置root账户的密码为123456 quit # 退出MySQL命令行 service mysqI restart # 重新启动MySQL服务
1.3 可视化管理工具的选择和安装
本节视频教学录像:7分钟
本节主要介绍几种常用的可视化管理工具的特点,以及部分可视化管理工具的下载和安装。
1.3.1 选择和下载可视化管理工具
目前,有很多优秀的MySQL可视化管理工具,比如MySQL Workbench、phpMyAdmin、Aqua Data Studio、SQLyog、MySQL-Front、mytop、Sequel Pro、SQL Buddy、MySQL Sidu、Navicat for MySQL等,开发者可以根据需求进行选择。下面对其中常用的5种可视化管理工具做简单介绍。
1.MySQL Workbench
MySQL Workbench是一个由MySQL开发的跨平台、可视化数据库工具。它作为DBDesigner4工程的替代应用程序而备受瞩目。MySQL Workbench可以作为Windows、Linux和OS X系统上的原始GUI工具,它有各种不同的版本。
2.Aqua Data Studio
对于数据库管理人员、软件开发人员以及业务分析师来说,Aqua Data Studio是一个完整的集成开发环境(Intergrated Development Environment, IDE)。它主要具备了以下4个方面的功能:
(1)数据库查询和管理工具;
(2)一套数据库、源代码管理以及文件系统的比较工具;
(3)为Subversion(SVN)和CVS设计了一个完整的集成源代码管理客户端;
(4)提供了一个数据库建模工具(Modeler),它和最好的独立数据库图表工具一样强大。
3.SQLyog
SQLyog是一个全面的MySQL数据库管理工具。它的社区版(Community Edition)是具有GPL许可的免费开源软件。这款工具包含了开发人员在使用MySQL时所需的绝大部分功能:查询结果集合、查询分析器、服务器消息、表格数据、表格信息,以及查询历史,它们都以标签的形式显示在界面上,开发人员只要单击鼠标即可。此外,它还可以方便地创建视图和存储过程。
4.MySQL-Front
这个MySQL数据库的图形GUI是一个“真正的”应用程序,它提供的用户界面比用PHP和HTML建立起来的系统更加精确。因为不会因为重载HTML网页而导致延时,所以它的响应是即时的。如果供应商允许的话,可以让MySQL-Front直接与数据库进行工作。如果不行,也只需要在发布网站上安装一个小的脚本即可。
5.Sequel Pro
Sequel Pro是一款管理Mac OS X数据库的应用程序,它可以让用户直接访问本地以及远程服务器上的MySQL数据库,并且支持从流行的文件格式中导入和导出数据,其中包括SQL、CSV和XML等文件。
注意
php MyAdmin和Navicat for MySQL的特性及在Windows 7下的基本操作详见第3章。
其中,MySQL Workbench的安装及配置在第1.2节介绍MySQL安装时已经包括,且由于工具较多无法一一介绍其安装和配置,所以本节主要选择了Navicat for MySQL,介绍其在Linux和Windows 7系统环境下的安装。
1.3.2 在Linux系统环境下的安装
本节选用的Navicat for MySQL版本为navicat111_mysql_cs.tar.gz,官方下载地址:http://www.navicat.com.cn/download/navicat-for-mysql。使用方法如下。
(1)打开终端。
选择应用程序→系统工具(或附件)→终端,切换到root账户:#su,密码:xx。
注意
输入root密码时,密码不会显示出来,也没有提示的特殊字符,输完密码后按Enter键就可以了。
(2)切换到存放navicat_for_mysql_10.0.11_cn_linux.tar.gz软件包的目录,例如/home/zdw/software目录下。
# cd /home/zdw/software
(3)解压navicat_for_mysql_10.0.11_cn_linux.tar.gz。
# tar -zxvf navicat_for_mysql_10.0.11_cn_linux.tar.gz
解压后会得到名为navicat_for_mysql的文件夹。
(4)将解压生成文件夹移动到/opt目录下。
# mv /home/zdw/software/navicat_for_mysql /opt
(5)运行Navicat的方法。
① 进入安装目录:# cd /opt/navicat_for_mysql。
② 执行命令:# ./start_navicat,这样即可启动Navicat。
为了方便,也可以创建Navicat的桌面启动器,方法如下:在桌面右键单击→单击“创建启动器”项→在“类型”栏选择“应用程序”;“名称”栏填入“Navicat”; “命令”栏单击右边的“浏览”选择到→“文件系统”→“opt”→“navicat_for_mysql”→“start_navicat”;
最后单击“确定”,就在桌面创建好Navicat的启动器。
1.3.3 在Windows系统环境下的安装
本节选用的Navicat for MySQL版本为navicat111_mysql_cs_x64.exe,官方下载地址:http://www.navicat.com.cn/download/navicat-for-mysql。Windows 7环境下安装比较简单,过程如下。
(1)双击安装程序,单击“下一步”。
许可协议选择“我同意”,单击“下一步”。
(2)如果不想把软件安装在系统盘下,在此可以修改安装目录。
(3)选择是否创建桌面快捷方式。
(4)进入安装页面,单击“安装”。
(5)安装完成,单击“完成”。
(6)打开Navicat for MySQL,使用root连接到本机的MySQL即可执行相关数据库的操作,界面如下所示。
1.4 测试安装环境
本节视频教学录像:3分钟
到此MySQL的安装配置已经完成,可以简单地对安装结果做一下测试,如在Windows 7环境下,在“开始”菜单下找到“MySQL”,单击“MySQL Workbench 6.2 CE”打开如下界面。
在界面中单击“root”,弹出登录提示框,如下图所示。
输入安装时设置的密码,即可进入主界面,在此界面可以做关于数据库的相关操作。
下面以导入数据库文件、查询表内容为例,做简单测试。
1.导入数据库
单击“MANAGEMENT”下的“Data Import/Restore”,系统弹出登录验证界面,输入登录密码,进入到导入界面,如下图所示。
在“Options”中选择“Import from Self-Contained File”,找到数据库文件XSCJ.sql,单击“Start Import”,导入成功显示如下。
另外,在左侧列表“SCHEMAS”中执行刷新,会看到导入的数据库。
2.查询
在Query 1窗口中输入相关SQL语句,执行查询,如输入如下语句。
use xscj;
select * from xs;
将查询出XSCJ数据库下xs表中的所有信息,如下图所示。
通过上述的简单操作,证明所安装的MySQL能够正常使用,接下来就可以结合其他开发环境进行项目的开发。
1.5 卸载MySQL
本节视频教学录像:2分钟
卸载MySQL需要保证能完全卸载,这样才不影响下次安装使用,下面以Windows 7为例介绍具体的卸载过程。
(1)在Windows服务中停止MySQL的服务。
(2)打开“控制面板”,单击“程序和功能”,找到“MySQL”,右键单击从下拉菜单中选择卸载(或者使用其他软件卸载)。
(3)卸载完成后,删除安装目录下的MySQL文件夹及程序数据文件夹,如C:\Program Files(x86)\MySQL和C:\ProgramData\MySQL。
(4)在运行中输入“regedit”,进入注册表,将所有的MySQL注册表内容完全清除,具体删除内容如下:
① HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL目录删除;
② HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL目录删除;
③ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL目录删除。
(5)操作完成重新启动计算机。
注意
在删除C:\ProgramData文件下的MySQL文件时,需要在“工具→文件夹选项→查看”中选中“显示隐藏的文件、文件夹和驱动器”选项。
1.6 高手点拨
本节视频教学录像:7分钟
1.安装过程中注意事项
(1)如果是用MySQL + Apache,使用的又是FreeBSD网络操作系统的话,安装的时候应注意FreeBSD的版本问题。对FreeBSD 3.0以下版本来说,MySQL Source内含的MIT-pthread运行是正常的,但3.0以上版本,必须使用Native Threads,也就是加入一个with-named-thread-libs=-lc_r的选项。
(2)如果在COMPILE过程中出了问题,请先检查你的gcc版本是否在2.81版本以上,gmake版本是否在3.75以上。
(3)如果内存不足,请使用./configure--with-low-memory来加入。
(4)如果要重新做configure,那么可以键入“rm config.cache”和“make clean”来清除记录。
(5)把MySQL安装在/usr/local目录下,这是缺省值,也可以按照需要设定所要安装的目录。
2.安装过程中常见的问题解析
(1)重新安装后提示“1045 access denied for user 'root'@'localhost' using password yes”。
解决方法:首先,删除MySQL程序,利用“sc delete mysql”删除原来的服务。然后从Windows的命令行(“DOS”下),切换到MySQL bin目录下,比如目录为C:\Program Files\MySQL\MySQL Server 5.6\bin,输入如下命令。
mysqld --defaults-file=”C:\ProgramFiles\MySQL\MySQL Server 5.6\my-default.ini” --console--skip-grant-tables
注意
找到你自己机器上my- default.ini的位置。
接下来输入命令:“mysql -uroot mysql”。最后输入命令:“mysqladmin shutdown”,之后正常重启MySQL服务即可。
(2)重新安装MySQL卡在最后一步过不去。
问题描述:第一次安装完MySQL,使用JDBC写入的中文都是乱码,但已存在于数据库中的中文数据正常,改了字符编码还是没能解决问题,于是决定重装。但重装卡在最后一步始终过不去。
解决方案:
① 在注册表里搜索“MySQL”,删除相关记录;
② 删除MySQL安装目录下MySQL文件;
③ 删除C:/ProgramData目录下MySQL文件夹,然后再重新安装,安装成功。
(3)mysql -uroot -p登录不上。
问题描述:可以十分确定密码是正确的,但就是连不上,然后关闭MySQL服务,使用“mysqld--skip-grant-tables”启动,可以正常连接。重新安装了很多次,都是一样的。之前安装都是在安装过程中设置了root密码。
注意
为了支持中文,安装中字符编码选择UTF-8。
解决方案:不要设置root密码,可以正常登录后,再使用命令修改root密码,再次连接。
(4)正常安装后,查询出中文数据是乱码。
问题描述:安装好数据库后,导入数据,由于之前数据采用GBK编码,而安装MySQL过程中使用UTF-8编码,所以查询出来数据是乱码。
解决方法:登录MySQL,使用set names gbk命令后,再次查询,中文显示正常。
(5)-bash: mysql: command not found。
用“mysql”命令进行登录MySQL报错,原因是没有设置环境变量,需要设置,或者进入到bin目录进行登录cd /usr/local/mysql/bin。
mysql -u root
(6)ERROR 1130: Host '192.168.1.3′ is not allowed to connect to this MySQL server。
用MySQL远程工具链接数据库报错,这个错误原因是没有开放远程链接功能,可以在MySQL里面输入如下命令进行解决。
GRANT ALL PRIVILEGES ON *.* TO 'root‘@'%' IDENTIFIED BY 'password' WITH GRANT OPTION
1.7 实战练习
1.请简述MySQL的优缺点。
2.请问你在安装MySQL过程中遇到哪些问题,如何解决的?