第2章 My SQL的环境配置
本章我们将设置本书中用于学习My SQL的环境。
2.1 本书中使用的软件
这里我们来安装本书中使用的软件,并设置可以使用MySQL和Apache的环境。
本书中使用的软件主要包括以下几个。
{L-End} MySQL(RDBMS)
{L-End} Apache(Web服务器)
{L-End} PHP(编程语言)
本来这些软件是需要分别进行安装和配置的,但是分别安装会花费很多时间和精力,而且在某些使用环境下还需要进行复杂的配置。
所以建议大家使用能够轻松构建My SQL+Apache+PHP运行环境的MAMP。使用MAMP可以非常简单并且准确地构建My SQL+Apache+PHP环境。MAMP的名字取自Macintosh、Apache、My SQL和PHP这几个词的首字母。MAMP中的M是Macintosh的意思,所以可能有人担心这个软件仅能在mac OS上使用,但其实它也可以在Windows上使用。本书介绍的操作方法基本以Windows环境为前提。
在从本书的支持网站上下载的文件中,也包含了用于Windows环境的免费版MAMP的安装文件(MAMP_MAMP_PRO_3.3.1.exe)。请参考本书前言“示例文件的下载”部分下载开发环境和示例程序,具体的安装方法将在以后的章节中介绍。
此外,通过MAMP构建的环境主要以开发为目的,并没有达到能够在互联网上实际发布的安全级别。所以如果要实际发布到互联网上,还需要事先做好充足的准备。
专栏 XAMPP
XAMPP和MAMP一样,是一个可以轻松构建My SQL+Apache+PHP运行环境的软件。详细内容可以参考下面Apache Friends的Web页面。
XAMPP
https://www.apachefriends.org/zh_cn/index.html
本书原版第1版和修订版都使用了XAMPP来构建MySQL+Apache+PHP运行环境,但是XAMPP从版本5.6.14开始使用的数据库从MySQL换成了MariaDB。截至2017年8月,XAMPP的最新版本XAMPP 7.1.8的数据库依然使用了MariaDB。
2.2 学习My SQL前的准备(安装和配置)
下面我们开始使用MAMP安装My SQL。
2.2.1 关于本书使用的MAMP
如上所述,使用MAMP可以轻松地构建My SQL+Apache+PHP的运行环境。本书使用的MAMP 3.3.1的系统要求和所需要的主要软件一览可参考表2-1。另外,MAMP包括可以免费使用的标准版和需要付费的专业版(MAMP PRO)两种版本,本书使用的是标准版。
表2-1 MAMP 3.3.1的数据表
在MAMP的安装过程中,除了上面的软件之外,还有许多软件会被安装,但是本书介绍的内容并不涉及这些软件。另外,虽然PHP的版本5系列也被安装了,但由于在标准版中仅能选择版本7系列,所以本书使用了PHP 7.1.5。
此外,关于php My Admin,附录中介绍了简单的使用方法。
MAMP的最新版可以通过下面的URL下载。但是要注意,如果版本不同,具体的操作内容就可能会和本书介绍的不同。
专栏 如果文件的扩展名未显示
本书介绍的内容以扩展名(主文件名后面附属的“.txt”等后缀)呈显示状态为前提。但是,Windows环境默认不显示扩展名。所以在没有显示扩展名的情况下,要事先把扩展名设置成显示状态。在Windows 10中,我们只需在文件资源管理器(explorer)中将“查看”菜单中的文件扩展名勾选上即可。
2.2.2 安装MAMP
下面介绍Windows版的MAMP 3.3.1的安装方法。书中按照选择默认的路径安装文件夹的方式进行介绍。所以,如果按照本书介绍的方法操作,软件会安装到路径C:\MAMP中。
如果仅仅安装了MAMP,而My SQL和Apache都不能正常使用的话就没有意义了。因此,大家需要小心谨慎地进行操作。
▶如果80号端口和3306号端口被占用就会运行失败!
MAMP会把80号端口分配给Apache,把3306号端口分配给My SQL使用。所以,如果这些端口已经被占用,Apache和My SQL的相关服务就无法运行。因此,如果有占用这些端口的应用程序或者服务,请禁用后再安装MAMP。
▶如果旧版本的Apache和MySQL有残留也会运行失败!
如果以前安装过Apache和My SQL,并且相关内容没有卸载干净,就可能会出现安装失败或者无法正常运行等情况。所以,请务必把旧的Apache和My SQL卸载干净,然后重新启动操作系统,安装MAMP。
▶安装方法
①解压缩下载文件,执行My SQL_Book文件夹的子文件夹MAMP中的MAMP_MAMP_PRO_3.3.1.exe文件。
②如果“用户账户控制”对话框中显示“你要允许此应用对你的设备进行更改吗”,选择“是(Y)”。
③安装向导(setup wizard)启动后,会显示图2-1的画面,点击“Next >”。
图2-1 启动安装向导
④在图2-2的画面中,取消“MAMP PRO”的选中状态,点击“Next >”。
图2-2 MAMP and MAMP Pro的画面
⑤图2-3为是否同意授权许可证的确认画面,请选择“I accept the agreement”,然后点击“Next >”。
图2-3 同意授权许可证
⑥在图2-4的画面中,保留“C:\MAMP”,点击“Next >”。
图2-4 指定安装路径
⑦在图2-5的画面中,指定在开始菜单中显示的文件夹名。因为没有必要进行修改,所以保留“MAMP”,点击“Next >”。
图2-5 指定创建快捷方式的文件夹
⑧为了在桌面上创建MAMP的快捷方式,保持选择框的选中状态,点击“Next >”(见图2-6)。
图2-6 指定在桌面上创建MAMP的快捷方式
⑨图2-7的画面会显示要安装的内容,确认后点击“Install”。
图2-7 确认安装内容
⑩这样安装就开始了。安装结束后,会显示图2-8的画面,点击“Finish”,MAMP就安装完成了。
图2-8 安装向导结束
2.2.3 MAMP的启动和设置
安装完成后,就可以立即尝试启动MAMP了。点击桌面上的MAMP图标,或者选择“开始”菜单的“MAMP”→“MAMP”,就可以启动MAMP了。
启动MAMP后会显示图2-9的画面。在初始设置的情况下,启动MAMP时Apache和My SQL也会自动启动。
图2-9 MAMP的启动画面
我们可以通过这个画面控制Apache和My SQL。如果想停止Apache和My SQL,则点击“Stop Servers”。在停止的情况下,按钮会变成“Start Servers”,再次点击就可以启动Apache和My SQL了。
当对MAMP进行各种设置时,点击“Preferences”会显示出图2-10的画面。我们可以通过切换画面上方的标签来设置相关内容。本书没有什么项目需要更改设置,所以这里仅介绍设置方法。
图2-10 “Start/Stop”标签
在“Start/Stop”标签(见图2-10)中,我们可以设置MAMP启动时各服务器的相关动作。
在“Ports”标签(见图2-11)中,我们可以设置Web服务器和My SQL服务器使用的端口号。如果80号端口和3306号端口被其他程序占用了,也可以设置成别的端口号以便和其他程序共存。另外,Nginx是和Apache一样用于构建Web服务器的软件,但本书没有使用它。
图2-11 “Ports”标签
在“PHP”标签(见图2-12)中,我们可以设置使用的PHP版本以及缓存相关的功能。在MAMP 3.3.1的情况下,可以选择PHP 7.1.5或PHP 7.0.19。本书使用了默认的7.1.5版本。
图2-12 “PHP”标签
虽然PHP的缓存功能包括Apcu和Zend OPcache两种类型,但这里保留默认的关闭缓存状态。
在“Web Server”标签(见图2-13)中,我们可以设置Web服务器的种类和文件根目录。文件根目录(document root)是Web服务器放置发布文件的最上一层目录。默认目录是C:\MAMP\htdocs,可以通过http://localhost/访问。
图2-13 “Web Server”标签
专栏 什么是localhost
localhost就是本地主机,即当前使用的计算机的名称(主机名)。
localhost对应的IP地址为127.0.0.1(IPv4)和::1(IPv6)。这是用于表示主机自身的特殊IP地址,称为本地回环地址(local loopback address)。这个localhost可以用于跟主机自身进行通信测试。
2.2.4 确认开始页
下面试着打开MAMP的开始页。我们可以通过开始页确认PHP和My SQL的设置内容。在MAMP的启动画面上,点击“Open start page”(见图2-14)。
图2-14 MAMP的开始页
从My SQL服务器的设置概况中可以看到,用户名和密码都是“root”。另外,点击画面上方的“Tools”,选择菜单中的“php My Admin”,就可以启动php My Admin了。
2.2.5 构成MAMP的文件夹
如果将MAMP安装在路径C:\MAMP中,构成它的文件夹就是下面这样。
除此之外还有一些文件夹,但本书并不会使用,所以这里省略了相关介绍。
2.3 My SQL的路径设置
如果按照本书介绍的方法安装MAMP,以后使用的MySQL监视器(MySQL monitor)的程序文件就会放在C:\MAMP\bin\mysql\bin中。因此,要想启动MySQL监视器,就需要先移动到这个文件夹里。每次都执行这样的操作会让人觉得有些麻烦,所以我们事先设置一下相关路径。
下面将介绍Creators Update(版本1703)以后的Windows 10的设置方法,如果是其他版本,请通过控制面板打开“系统属性”对话框。
① 右键点击“开始”→“系统”→“相关设置”中的“系统信息”→“高级系统设置”。
② 点击画面下方的“环境变量”(见图2-15)。
图2-15 “系统属性”对话框
③选择“系统变量”中的变量“Path”,点击“编辑”按钮(见图2-16)。
图2-16 环境变量
④点击“新建”按钮,输入C:\MAMP\bin\mysql\bin(见图2-17)。另外,根据Windows的版本,有时会在当前变量值的最后加上“;”,然后再追加C:\MAMP\bin\mysql\bin。
图2-17 编辑环境变量
⑤点击“确定”,关闭各个对话框。
2.4 关于中文的设置
某种字符的集合称为字符集(character set)。例如中文汉字和英文字母等都是字符集的一种。
在计算机和网络上表示字符时,需要给各个字符添加识别信息,例如数字或者符号等。给各个字符分配的数字或者符号称为字符代码(character code)。
给字符集分配字符代码时的规则称为字符编码(character encoding),中文相关的主流字符编码如表2-2所示。
表2-2 中文相关的主流字符编码
举例来说,“啊”字在中国国家标准GB 2312、GBK和GB 18030字符编码中的编码都为“B0A1”,而在UTF-8中则为“E5958A”。从中可以看出,即使文字相同,如果字符编码不同,表示的字符也可能不同,由此才出现了乱码现象。
世界上有许多语言系统和文字,所以除了上面介绍的内容之外还有无数的字符集和字符编码。但这样一来,面向全世界发布的网页等就会变得很难处理,因此人们开发了可以支持全世界所有字符的字符集Unicode。Unicode的字符编码方式有好几种,现在最为常用的是在HTML 5中被默认使用的UTF-8。顺便说一下,在UTF-8的情况下,字符集和字符编码都称为UTF-8。
另外,很多时候字符编码也用“字符代码”这个词来表示,不过本书统一使用“字符编码”这个名称。
2.4.1 My SQL的字符编码设置
本书中,存储在My SQL中的数据使用了字符编码UTF-8。这主要是为了方便和PHP结合起来开发Web应用程序。通过Web应用程序,我们可以把输入的数据存储到数据库,再从数据库读出数据显示在Web画面上。在Web的世界中默认使用的字符编码是UTF-8,所以如果数据库的字符编码也是UTF-8,就不需要进行字符编码的转换了。
而本书在介绍数据库的基本操作时,使用了运行在命令行上的一个名为My SQL监视器(→3.2节)的客户端软件。因为中文Windows系统中命令行的默认字符编码是GBK,所以My SQL监视器的输入输出字符串的字符编码也是GBK。也就是说,如图2-18所示,存储在数据库中的字符的字符编码和客户端的输入输出中使用的字符编码并不相同。
图2-18 本书字符编码的处理
在这种情况下,当向数据库存储数据时(GBK→UTF-8),以及从数据库读取数据显示在客户端上时(UTF-8→GBK),都需要进行字符编码的转换。不过请放心,转换操作并不麻烦,只要在My SQL的设置文件中设置一番即可。
此外,关于本书使用的文本文件的字符编码,还有几个需要注意的地方,在以后的介绍中我会适时进行提醒。
2.4.2 修改my.ini
My SQL中字符编码的初始设置可以通过文本文件my.ini进行修改。如果根据本书2.2节的介绍安装了MAMP,my.ini就会保存在下面的文件夹中。
C:\MAMP\conf\mysql
用文本编辑器打开my.ini,然后添加代码清单2-1中红字部分的内容。1在第39行左右,用于设置MySQL数据库的字符编码。2在第146行左右,用于设置mysql命令(后述)的字符编码。
代码清单2-1修改my.ini
修改完my.ini后保存,并在MAMP的画面上重新启动服务器。
3.3.4节将介绍如何确认是否正确地设置了字符编码,如果没有正确地进行设置,请再重新确认一下上面的操作。
2.5 本书中使用的表
本书中作为示例使用的数据库,其名称全部为db1。另外,介绍My SQL时使用的表,主要是虚拟公司“D公司”的销售信息表tb和员工信息表tb1。
2.5.1 销售信息表tb(按员工号统计的月销售额)
表2-3是按D公司员工号统计的每月销售数据。
表2-3 D公司2018年第2季度销售信息
假设销售额以万元为单位。也就是说,员工号为A103的员工在4月份的销售额是101万元。在对表进行操作的时候想想身边的销售公司,就很容易理解了。
本书中,列名(→1.1.2节)使用了empid(员工号)、sales(销售额)、month(月份)这样的英文表示。对于列名、表名和变量名等的命名方法,虽然很多程序员有自己惯用的规则,但为了更容易理解,本书采用了简单的英文字母作为列名。
2.5.2 员工信息表tb1(各员工号代表的员工的姓名、年龄)
tb1是D公司的员工信息表(见表2-4),通过这个表我们可以知道,刚才介绍的表tb中销售额为101万元、员工号为A103的员工是中川,年龄是20岁。
表2-4 D公司2018年的员工信息
另外,在后面的解说中表tb1的内容会发生变更,所以为了使没有从头开始阅读本书的读者不会在理解上产生问题,我会以操作和表tb1内容完全一样的tb1A、tb1B、tb1C等的形式进行介绍。这样既可以创建多个内容相同的表,也可以忽略中途修改的内容,使用相同的表tb1进行练习。
关于表的复制请参考7.1节的内容。
2.6 总结
本章介绍了以下内容。
●MAMP的安装
●到MySQL启动为止的设置
●MySQL中中文字符编码的设置
●书中使用的员工信息表tb1和销售信息表tb的内容
如果My SQL安装失败,就很难学习第3章以后的内容了。在安装失败的情况下,请参考附录2,提前把问题解决掉。
▶自我检查
下面检查一下本章学习的内容是否全部理解并掌握了。
{L-End} 能够正常安装MAMP
{L-End} 能够设置字符编码
{L-End} 能够设置MySQL的路径、扩展名等
{L-End} 理解MySQL里中文的相关处理
{L-End} 理解员工信息表tb1和销售信息表tb的内容
专栏 关于macOS版的MAMP
MAMP原本就是面向macOS开发的软件,Windows版是之后才开发的。现在依然按照这种开发顺序进行开发,所以本书使用的Windows版的MAMP的版本是3.3.1,而macOS版本已经是4.2了。(2017年8月时的信息)
Windows版的MAMP和mac OS版的MAMP有以下几个不同点。需要注意,这些内容是在mac OS版MAMP 4.2的基础上总结出来的,将来很有可能发生改变。
●MAMP和MAMP PRO
mac OS版的MAMP和MAMP PRO会被同时安装。当使用标准版的MAMP时,请启动“应用程序>MAMP”中的MAMP.app。
●mysql命令的路径
用于显示My SQL监视器的mysql命令在路径“应用程序> MAMP > Library > bin”中。可以通过在终端执行下面的export命令来添加这个命令的搜索路径。
export PATH=$PATH:/Applications/MAMP/Library/bin
●htdocs文件夹的路径
文件根目录的htdocs文件夹的路径变为“应用程序> MAMP > htdocs”。
●使用的端口
mac OS版的MAMP中包含的Apache和My SQL使用的端口与Windows版的有所不同,这是因为mac OS上默认安装了Apache,为避免发生冲突才使用了不同的端口。
因此,当访问mac OS版Apache管理的Web画面时,需要像下面这样在URL上指定端口。
{L-End} http://localhost:8888/MAMP