PHP、MySQL和Apache入门经典(第5版)

978-7-115-30270-0
作者: 【美】Julie C. Meloni
译者: 李军
编辑: 陈冀康

图书目录:

详情

本书将PHP、MySQL和Apache这3种流行的开源Web开发工具融于一体,语言通俗易懂、深入浅出。通过本书的学习,读者将学会如何设置以及使用PHP脚本语言、MySQL数据库系统以及Apache Web服务器,来创建出一个动态的Web站点。

图书摘要

版权信息

书名:PHP、MySQL和Apache入门经典(第5版)

ISBN:978-7-115-30270-0

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

• 著    [美] Julie C.Meloni

  译    李 军

  责任编辑 陈冀康

• 人民邮电出版社出版发行  北京市丰台区成寿寺路11号

  邮编 100164  电子邮件 315@ptpress.com.cn

  网址 http://www.ptpress.com.cn

• 读者服务热线:(010)81055410

  反盗版热线:(010)81055315


Julie C. Meloni: Sams Teach Yourself PHP, MySQL and Apache All in One

ISBN: 978-0-672-33543-3

Copyright © 2012 by Pearson Education, Inc.

Authorized translation from the English languages edition published by Pearson Education, Inc.

All rights reserved.

本书中文简体字版由美国Pearson公司授权人民邮电出版社出版。未经出版者书面许可,对本书任何部分不得以任何方式复制或抄袭。

版权所有,侵权必究。


PHP、MySQL和Apache是Web应用开发的强大组合工具。本书针对这三种主流工具的最新版本,逐步介绍了如何安装、配置和使用这些工具组合,并通过一些典型的项目案例,帮助读者开发出功能强大的Web应用。

全书分为6个部分共33章。第1部分“基础知识”,包括第1章到第4章,引领读者深入了解、安装和配置MySQL、Apache和PHP。第2部分“PHP语言结构”,包括第5章到第9章,讲解PHP语言基础,包括数组和对象这样的结构化元素。第3部分“深入编程”,包括第10章到第14章,介绍中级应用程序开发的主题,包括使用表单和文件、限制访问以及完成包含某个专门概念的小项目。第4部分“PHP和MySQL整合”,包括第15章到第18章,介绍使用数据库的一般方法。第5部分“基本项目”,包括第19章到第28章,介绍如何整合前面已经学习到的所有知识,使用PHP和MySQL执行一个特定任务。第6部分“管理和优化”,包括第29章到第33章,介绍管理和优化Apache和MySQL的方法。

本书内容全面、讲解详细、由浅入深、实例丰富,而且考虑到读者使用不同操作系统和开发环境的需求。本书可作为PHP、MySQL、Apache初学者的学习指南,也可作为Web开发技术人员的参考用书。


感谢Apache Software Foundation、PHP Group和MySQL AB,它们所创建的这些超级产品驱动了大量的Web,由此,它们得到了更多的认可。

尽管本书自从Daniel Lopez(Sams Teach Yourself Apache 2 in 24 Hours的作者)和Matt Zandstra(Sams Teach Yourself PHP in 24 Hours的作者)最初出版的版本之后已经经历了好几个版本,但是,如果没有他们多年前的工作的话,本书也不可能存在。


Julie C. Meloni是一位技术顾问。Julie自从Web诞生的时候就开始从事基于Web应用的开发。她是多本关于Web编程语言和数据库的图书和文章的作者,包括Sams Teach Yourself Blogging in a Snap一书。她的博客是thickbook.com和nerdtripping.com,后者包含了很多关于旅游的提示和技巧。


前 言

欢迎阅读本书。我很高兴地告诉你,PHP语言及其开发者社群和用户每天都在持续增加,因此,本书需要更新版本。

本书前一个版本介绍的PHP4,其“生命尽头”终于快到了,在GoPHP5活动的帮助下,Web主机服务提供商和应用程序开发者迁移其服务和代码,逐渐放弃特定于PHP 4的功能和代码实践,而进入PHP 5的世界。这是一个更快速、更好的功能集合。和本书上一版一样,本版中所有的代码都是基于编写本书的时候PHP最新的可用版本(具体来说就是PHP 5.4.0)。

你可能已经听说了PHP 6或者已经看到一些图书宣传自己使用了PHP 6作为核心语言。然而,PHP 6的语言版本还没有具体化,PHP 6计划的功能,都已添加到了PHP 5.3和PHP 5.4中。因此,如果你听说了PHP 6而在网上或PHP.net站点没有找到任何相关内容的话,不必担心,你并没有错过什么。

在本书中,你将学到配置和管理Apache Web服务器所必需的概念、PHP编程基础,以及使用和管理MySQL关系型数据库系统的方法。本书的目标是提供理解如何无缝地整合这些技术的基础,并且教授将它们整合到功能完备的Web站点和Web应用程序中的实用知识。本书应该是迈向高级站点开发的第一步,而不是唯一的一步。

本书为那些对基于Web的开发环境(可能是在Linux/UNIX或Windows下,甚至是在Mac OS X下)具有一般性理解的人们量身打造。假设你已经熟悉了自己的操作系统,并且掌握了编译(在Linux/UNIX系统上)或安装(在Windows和Mac OS X系统上)软件的基本方法。

假设读者没有任何关于语言的知识,这样的读者可先阅读介绍使用PHP编程的章节。然而,如果你有使用其他编程语言的经验,例如ASP、JSP、Ruby或Perl,你会发现这些章节学起来很容易,因为你已经熟悉诸如变量、控制结构、函数、对象等编程元素。类似的,如果你已经使用过其他的数据库,例如Oracle或Microsoft SQL Server,那会为学习和MySQL相关的内容奠定一个坚实的基础。

唯一真正需要的是,你能够理解使用HTML创建静态Web内容。如果你只是刚刚开始Web开发,应该能够使用本书,但是,你应该先考虑阅读一个HTML教程。如果你熟悉了创建基本的页面,那么你会学得更好。

本书分为6部分,对应特定的主题。你应该按部就班地学习每个部分,因为每个部分的内容都构建在前面部分的基础之上。

如果你发现自己已经熟悉某个主题,可以跳过并继续向前学习。然而,某些地方会引用前面的章节中学习过的特定概念,因此,请注意必须浏览一下跳过的章节,以便保证你的开发环境和本书一致。

在每章的末尾,都有一些问答题来测试你对该章内容的掌握程度。附加的思考题则提供了应用该章知识的另外一种方式,并且引导你在下一章使用这些刚刚学习到的知识。

在各章中出现的程序清单中的所有代码,都可以在随书光盘中找到。也可以从作者的Web站点http://www.thickbook.com/下载打包的代码。

自己录入代码,在打字、产生错误以及执行叫人伤透脑筋的查找分号错误的任务等方面会有些有用的体验。然而,如果你想要略过这些课程并且只是把本书的工作代码上传到你的站点,也没问题。

本书使用不同的字体来表示代码和正文,也通过这种方法来帮你识别重要的概念。在本书中,代码、命令和你所输入的或者在计算机屏幕上看到的文本,都使用等宽字体。在正文中定义新术语的地方使用斜体。此外,特别的内容版块都带有图标。


第1章 安装QuickStart向导

第2章 安装和配置MySQL

第3章 安装和配置Apache

第4章 安装和配置PHP


为了帮助你快速起步,这个简单的第1章将帮助你熟悉整体的跨平台安装软件包XAMPP的安装过程。后续的第2、3、4章分别介绍了如何从互联网上获取并安装MySQL、Apache和PHP,从而可以确保软件版本是最新的。另外,这几章还展开说明了安装过程中的每一步,以及理解这些技术如何一起工作的其他重要信息。

你应该在接下来的三章中熟悉每一种技术的扩展信息。然而,如果你只是想要开始在本地机器上工作的话,本章也是很好的参考。

第三方安装包是由最初创建者以外的公司或组织所提供的程序包。在本章中,我们将学习如何使用XAMPP安装包来同时安装PHP、MySQL和Apache,可以在我们将要使用的任何操作系统上(Linux/UNIX、Windows或Mac)完成安装。

除了因为我自己使用XAMPP数年了,我选择在本章中使用它的另一个原因是,其名称中带有X。X表示这是AMPP(Apache、MySQL、PHP和Perl)的一个跨平台安装程序(Perl不是本书的主题,因此,将其当做额外的学习内容)。还有两种其他很好的Apache、MySQL和PHP安装程序包,但它们针对特定的操作系统。

使用第三方安装程序包的一个潜在的缺点是,绑定在一起的核心技术的版本,总是正式版之后的几个修订版。这恰好是因为创建和测试程序包本身涉及到一些工作,以便确保这些技术的最新版本之间没有冲突;这还必须经过一个质量保证的过程。然而,这一方案的优点是,当你使用安装程序包来安装这些技术的时候,升级的过程只不过是运行一个新的安装程序,它会负责为你删除或升级所有的文件。

接下来的3节介绍了XAMPP的基本安装过程。你只需要阅读适用于你的操作系统的节。然而,一定要阅读本章1.5节,因为它适用于所有的操作系统。

尽管下面介绍的过程是在Ubuntu Linux系统上测试过的,但这些步骤对其他所有Linux或商业UNIX发布的默认安装都是一样的。在编译过程中,你可能遇到意外的错误信息,此时应联系系统管理员或参考自己特定的操作系统的文档。

如果你使用本书随书光盘中包含的XAMPP版本,请从这里开始,以超级用户启动(作为root登录或作为一个常规系统用户su登录),并在文件系统下用/mnt参数加载CD-ROM。

现在,你已经访问了随书光盘中的XAMPP文件,或者你已经从http://www.apachefriends.org/en/xampp-linux.html下载了最新版本,继续具体的安装步骤如下。

作为一名超级用户,将文件从随书光盘的XAMPP目录(或者从下载位置)复制到/opt目录。在/opt目录中,解压缩已经下载的文件如下。

注意:


在编写本书时,XAMPP的版本号是1.8.0-beta2,因此,其文件名是xampp-linux-1.8.0-beta2.tar.gz。随后的版本将具有不同的文件名,因此,请相应地修改命令。

这会创建一个名为/opt/lampp的目录,XAMPP安装于其中。要启动XAMPP,首先,将目录更改到新创建的目录。

执行如下的命令,以启动XAMPP(启动Apache和MySQL)。

将会看到如下的信息。

要测试Web服务器是否运行,打开一个Web浏览器并且输入http://localhost/xampp/index.php。XAMPP服务的菜单应该会显示出来,如图1-1所示。

图1-1 XAMPP的菜单页面

所有要做的就是这些,XAMPP已经在你的机器上安装了Apache、PHP和MySQL,并且,你可以看到服务的状态。在浏览http://localhost/xampp/index.php 的时候,你可以通过左边列出的链接了解更多的相关信息。

要停止XAMPP及其服务,可以在任何时候通过命令行执行如下命令。

确保阅读本章1.5节,了解有关保护安装了XAMPP的机器的更多信息(即使该机器只是用于开发)。

随书光盘中的XAMPP安装文件已经经过了测试,并且适用于从Windows XP到Windows 7的多种Windows操作系统。Windows较早的版本则不支持。要使用随书光盘中的XAMPP安装文件,首先将光盘插入光驱,它应该会自动播放。如果没有,双击“我的电脑”下的光驱图标,并且找到包含XAMPP安装文件的目录。

找到随书光盘上的XAMPP文件,或者从http://www.apachefriends.org/en/xampp- windows.html下载了最新版本之后,双击该文件以启动带向导的安装程序。

由于Windows操作系统发布版本的细微差别,并且由于Windows机器上可能安装了不同的安全策略和程序,如果任何安装步骤没有顺利进行,请访问位于http://www.apachefriends.org/en/faq-xampp-windows.html的针对Windows用户的XAMPP FAQ。

首先会请你选择语言,English是默认的选择。在选择了语言并单击OK按钮之后,你将会看到安装程序的欢迎界面,如图1-2所示。

图1-2 XAMPP安装主界面

注意:


在编写本书的时候,XAMPP的版本号是1.7.7,因此,安装向导显示了该版本号。最新的版本会使用不同的版本号,但是,安装过程是类似的。

点击Next按钮以继续安装过程。就像大多数基于向导的安装一样,在进行下一步之前,安装程序要求你选择一个安装位置和一些安装选项。XAMPP的安装也没什么不同,你应该保留默认的安装位置,以及默认的安装选项,并且点击Next按钮继续进入下一个界面。此时,安装过程自动进行,如图1-3所示。

图1-3 XAMPP安装继续,解压文件

安装过程完成之后,安装程序会提示你当前状态;单击Finish按钮完成安装。在XAMPP安装过程结束之前,它询问你是否想要启动Control Panel,以管理所安装的服务,如图1-4所示。

图1-4 XAMPP安装完成

XAMPP Control Panel使你能够通过一次鼠标单击来启动并停止在机器上运行的Apache和MySQL服务器进程,如图1-5所示。如果你只是为了进行开发而在本地机器上运行这些服务器进程,只有当你需要它们的时候,才想要打开它们;Control Panel允许你快速地做到这一点。

图1-5 XAMPP Control Pane

要测试Web服务器是否运行,打开Web浏览器并且输入http://localhost/xampp/xampp.php。应该会显示XAMPP菜单,如图1-6所示。

图1-6 XAMPP菜单页面

所有要做的就是这些,XAMPP已经在你的机器上安装了Apache、PHP和MySQL,并且,你可以看到服务的状态。在浏览http://localhost/xampp的时候,你可以通过左边列出的链接了解更多的相关信息。确保阅读本章1.5节,了解有关保护安装XAMPP的机器的更多信息(即使该机器只是用于开发)。

随书光盘中的XAMPP安装文件已经经过了测试,并且适用于Mac OS X 1.4及其之后的各个版本。Mac OS X的较早的版本则不支持。

要使用随书光盘中的XAMPP安装文件,首先将光盘插入Mac上的光驱,它应该会自动播放。如果没有,双击“我的电脑”下的光驱图标,并且找到包含XAMPP安装文件的目录。

找到随书光盘上的XAMPP文件,或者从http://www.apachefriends.org/en/xampp-mac.html下载了最新版本之后,双击该文件以启动带向导的安装程序。你将会看到如图1-7所示的界面。

图1-7 在Mac上安装XAMPP的说明

在编写本书时,针对Mac用户的XAMPP的版本号是1.7.3,因此,这个安装程序包显示了该版本号。随后的版本将具有不同的文件名,因此,请相应地修改命令。

按照界面上的指示,将XAMPP文件夹拖曳到Applications文件夹中。在复制了文件夹和文件之后,可以在/Applications/XAMPP文件夹中找到XAMPP Control Panel的链接,如图1-8所示。

图1-8 找到XAMPP Control Panel的链接

双击该链接以打开XAMPP Control Panel,通过该面板我们可以在机器上启动或停止Apache和MySQL服务器进程。如果你只是为了进行开发而在本地机器上运行这些服务器进程,只有当你需要它们的时候,才想要打开它们;Control Panel允许你快速地做到这一点。

要测试Web服务器是否运行,打开Web浏览器并且输入http://localhost/xampp/index.php。XAMPP服务的菜单应该会显示出来,如图1-9所示。

图1-9 XAMPP菜单页面

所有要做的就是这些,XAMPP已经在你的机器上安装了Apache、PHP和MySQL,并且,你可以看到服务的状态。在浏览http://localhost/xampp/index.php的时候,你可以通过左边列出的链接了解更多的相关信息。确保阅读本章1.5节,了解有关保护安装XAMPP的机器的更多信息(即使该机器只是用于开发)。

XAMPP的主要目的是提供一种快速容易的方式,以便在开发环境中安装Apache、MySQL和PHP。这种快速而容易的安装的代价之一,就是安全设置不完整,或者说,至少将确定安全设置是否足够重要的权利交给了用户。

使用最新的安装,会有如下的一些潜在的安全问题。

然而,XAMPP为每个操作系统都提供了一种工具,通过它,我们可以在一种开发环境中运行和完成增强XAMPP系统安全性的过程。

本章的所有步骤已经用本书附带的光盘里包含的软件版本测试过。如果遇到安装问题,首先检查是否严格按照本章给出的步骤进行。

然后,查看位于http://www.apachefriends.org/的XAMPP Web站点,以了解适用于这一安装包的FAQ。

如果这些过程仍然不管用,并且你想要尝试其他的第三方整体安装包,那么,请自行尝试WAMP和MAMP(在本章开始处提到)。你也可以尝试使用“较复杂”的安装方式,这需要使用后续3章中介绍的扩展信息。这些后续章节也提供疑难解答提示,以及可以帮助解决安装问题的其他站点的链接。


在本章中,你将学到:

这是与复杂安装相关的三章中的第一章,在此你将学习如何安装开发环境。如果你打算使用MySQL和PHP,我们首先要介绍MySQL的安装,因为在某些系统中编译PHP模块需要完成MySQL的安装才行。

本章的安装说明针对的是MySQL Community Server 5.5.21,这是MySQL软件的当前产品版本。这个版本号可以读作“MySQL服务器软件的主版本5,次版本(小发布)5的第21次修订”。修订版和小的发布并不遵从既定的一系列发布计划。当对代码进行扩展和修复并且进行了彻底的测试后,MySQL AB就会用一个新的修订号或次版本号来发布一个新的版本。

当你购买本书的时候,可能次版本号已经变成了5.5.22或者更高。如果是这种情况,你可以阅读位于http://dev.mysql.com/doc/refman/5.5/en/news-5-5-x.html的列表来了解安装或配置过程中的任何变化,那里的内容构成了本章的大部分内容。

尽管在两个次版本更新之间不可能所有的安装过程都要变化,但你还是应该养成习惯查看自己所安装和维护的软件的更新日志。如果在你阅读本书的时候,确实出现了一个次版本的变化,但更新日志中并没有提到安装的变化,你只需要用心记下,并且当出现在本书的安装说明和相应的图时,用新的版本号替代就行了。

MySQL AB是负责开发、维护和发布MySQL数据库的公司的名字,经过一系列的收购之后(Sun Microsystems收购了MySQL AB,Oracle公司收购了Sun Microsystems),现在,数据库巨人Oracle拥有MySQL。然而,该软件的MySQL Community Edition版本一直保持开源,它是由开源开发者支持的,并且可以在MySQL的Web站点http://www.mysql.com/免费获取。所有平台的二进制发布,用于Mac OS X的安装程序包,以及用于Linux/UNIX平台的RPM和源代码文件,都可以获得。

提示:


Linux和Mac OS X发布通常会包含MySQL软件的某个版本或其他开源的MySQL软件,尽管在当前的发布版本之后通常会有几个修订版或者小版本。

本章的安装说明基于正式发布的MySQL 5.5.x Community Server版本。所有的文件都可以从http://dev.mysql.com/downloads/mysql/5.5.html下载到,并且在编写本书的时候所采用的当前版本也可以在下载资料中找到。

不管你是使用RPM还是二进制代码安装,在Linux/UNIX上安装MySQL都比较简单。如果你通过RPM安装,MySQL AB提供了专门平台的RPM,例如针对运行在不同类型的处理器(如32位或64位的x86)上的SuSE Linux或一般的Linux。

对于RPM的一个最小的安装,你需要如下来自下载页面http://dev.mysql.com/downloads/mysql/5.5.html的两个文件(或者从本书随书光盘获取的文件)。

要执行最小的RPM安装,只需要输入如下命令。

提示:


把文件名中的VERSIONNUMBER替换为你所下载的实际版本,并且把PLATFORM替换为你所使用的平台的缩写。例如,当前的针对通用的Linux发布的MySQL 5.0 Server RPM,叫做MySQL-server- standard-5.0.51a-0.sles10. i586.rpm,而客户端库RPM叫做MySQL-client- standard-5.0.51a-0.sles10.i586. rpm。

对于Debian包的安装,你需要位于http://dev.mysql.com/downloads/mysql/5.5.html的页面中的*.deb文件(或者从本书随书光盘中获取)。然后,在命令提示行中输入如下命令。

另一种轻松并且很常见的安装方法是通过一个二进制代码发布包来安装。这个方法需要gunzip和tar工具解压缩并拆包发布,并且还需要能够在系统上创建组和用户。二进制代码发布安装过程中的第一组命令,就是添加一个组和一个用户并且拆包发布,如下所示。

提示:


把文件名中的VERSION-PLATFORM替换为你实际所下载的版本。例如,当前的MySQL 5.5通用Linux二进制代码发布叫做mysql-5.5.21-1- linux2.6.i386.tar。

接着,指令使用一个较短的名字创建一个符号链接。

一旦拆包,README文件和INSTALL文件将会根据你所选择的MySQL版本来完成剩下的安装过程。通常会用到如下的一组命令。

我们现在已经准备好启动MySQL服务器,所以跳转到2.7“基本安全规则”来学习如何添加密码和用户。如果在安装中碰到任何问题,请查阅2.6“安装故障排除”一节。

Mac OS X下的MySQL安装过程相当简单,MySQL AB的开发者已经为Mac OS X创建了一个安装包。到位于http://dev.mysql.com/downloads/mysql/5.5.html的MySQL下载页面并且找到Mac OS X(或者使用随书光盘中的文件)。如果你访问该站点,确保下载了适合你的系统的DMG:无论你使用的是Mac OS X 10.5或10.6版,或者32位或64位的系统。当你有了该文件,双击DMG文件夹。在打开了DMG存档之后,你会看到一个文件夹其中有一些文件,如图2-1所示。

图2-1显示MySQL DMG文件夹的内容

当下载结束,拆包安装文件并且双击*.pkg文件。后续的安装步骤完成如下过程。

1.MySQL安装包自动启动(如图2-2所示)。点击Continue跳转到下一步。

图2-2 Mac的MySQL安装程序已经启动

2.接下来的几个界面将会包含与安装以及MySQL授权许可相关的通用信息。阅读这些界面的内容并单击Continue按钮通过它们。

3.在通过了信息和授权许可界面之后,必须选择一个安装目标。从图2-3所示的界面中选择相应的驱动器,然后单击Continue按钮。

图2-3 选择一个安装位置

4.下一步会验证安装位置选择,并且需要单击Install按钮来继续。此时,在这个安装过程继续进行之前,可能提示你输入管理员用户名和密码。一旦继续开始,就让此过程运行,直到安装完成,如图2-4所示。

图2-4 MySQL已经安装

安装包中还包含了MySQL Startup Item安装程序。如果希望MySQL在系统启动的时候自动启动,就安装这个附加的包。MySQL Startup Item的安装遵从刚才所描述的标准安装方法,即双击*.pkg文件,选择一个目标盘,然后让安装过程运行到完成。安装了MySQL Startup Item之后,在命令行窗口中使用如下的命令来启动MySQL。

当你试图启动MySQL的时候,可能要求你输入管理员密码。在启动了MySQL之后,按下Ctrl+D退出命令行窗口。启动了MySQL之后,我们可以跳到2.7“基本安全规则”一节。如果在安装中碰到任何问题,请查阅2.6“安装故障排除”一节。

Windows上的MySQL安装过程使用一个标准的Microsoft Windows安装程序(Microsoft Windows Installer,MSI)文件来完成在Windows XP、 Windows Server 2003、Windows Vista或Windows 7机器上MySQL的安装和配置过程。到位于http://dev.mysql.com/downloads/mysql/5.0.html的MySQL下载页面,并且找到标题为“Windows Downloads”的小节。下载Windows Essentials文件,其扩展名为*.msi。下载完这个文件,双击文件开始安装过程。

如下的步骤给出了使用MySQL AB的Windows Essentials安装程序在Windows上安装MySQL 5.0.20的细节。不管你的Windows环境是什么,安装过程将遵从同样的步骤。

注意:


Windows用户也可以使用ZIP Archive版本。如果你想要安装ZIP Archive版本,确保阅读位于http://dev.mysql.com/doc/refman/5.5/en/windows-choosing-package.html的MySQL手册的说明和介绍。

直接进入安装过程,按照如下的步骤进行。

1.双击*.msi文件开始安装过程。你将会看到安装向导的第一个界面,如图2-5所示。单击Next按钮继续。

图2-5 Windows下MySQL安装向导的第一步

2.选择安装方式。Typical(典型)、Complete(完全)或Custom(自定义)(如图2-6所示)。Custom选项允许挑选和选择要安装的MySQL组件,而Complete选项则会安装MySQL的所有组件,包括文档和工具包套件。Typical安装方式则适合于大多数用户,因为它包括了用来对MySQL进行一般性管理的客户机、服务器和众多工具。选择Typical安装方式,并且单击Next按钮继续。

图2-6  选择一种安装方式

3.确认在下一个界面中的选择并且单击Install按钮继续。安装过程将负责把文件安装到正确的位置。

4.当安装过程完成后,可以选择继续MySQL Configuration Wizard(MySQL配置向导)。强烈推荐运行这个向导,因为它会创建一个自定义的my.ini文件,它根据你的具体需求而设置。要继续进行MySQL配置向导,选中Configure the MySQL Server Now复选框,并且单击Finish按钮,如图2-7所示。

图2-7 现在,MySQL已经安装了,继续执行MYSQL Config uration Wizard

5.你将看到配置向导的欢迎界面,单击Next按钮来继续向导的下一个步骤。你将会看到服务器配置的两个选项:Detailed和Standard。我们使用Detailed Configuration选项,这样可看到可用的所有选项。如果决定选择Standard Configuration选项,必须手动修改文件my.ini以达到想要的配置。选择Detailed Configuration单选按钮,然后单击Next按钮继续。

6.必须在如图2-8所示的界面中做出下一个选择。在这个步骤中,你要选择所运行的机器类型:Developer Machine、Server Machine或者Dedicated MySQL Server Machine。在这个界面上的选择决定了所用的内存、硬盘和处理器的分配。如果你为了测试而在个人电脑上使用MySQL,则选择Developer Machine选项。如果MySQL所运行的机器上还有其他的服务器软件,并且比你在个人电脑上运行MySQL要占用更多的系统资源,那就选择Server Machine选项。如果MySQL是机器上所运行的主要服务,并且可以使用大量的系统资源,选择Dedicated MySQL Server Machine选项。在做出选择之后,单击Next按钮继续。

图2-8 选择服务器类型作为MySQL配置的一部分

7.下一个配置选项适合于数据库应用。这些选项是Multifunctional Database、Transactional Database和Non-Transactional Database Only。对于Multifunctional Database,InnoDB和MyISAM存储引擎二者之间可以平均地分配资源。Transactional Database也支持InnoDB和MyISAM,但是大多数服务器资源倾向于InnoDB。Non-Transactional Database Only则不支持InnoDB,并且把所有的资源应用于MyISAM。除非你确切地知道自己的数据库使用哪种存储引擎,否则选择Multifunctional Database单选按钮并单击Next按钮继续。

8.如果已经选择了一个数据库使用选项,其中包含了InnoDB存储引擎,配置过程的下一步就允许配置硬盘位置和存储阈值。默认的情况如图2-9所示,可以单击Next按钮继续简单地确认默认配置,或者可以修改这些设置,然后单击Next按钮继续,从而让自定义设置起作用。

图2-9 为InnoDB存储引擎调整硬盘使用选项

9.下一个配置选项决定了MySQL服务器的并发连接数。你的设置取决于Web站点或应用程序所使用的数据流和数据库的数量。默认的设置是Decision Support (DSS)/OLAP,最多100个并发连接,假定平均值为20个。Online Transaction Processing (OLTP)选项的最多并发连接数是500个,而Manual设置允许我们从下拉列表中选择一个数值或者自己键入一个数值。做出自己的选择并单击Next按钮继续。

10.配置过程中的下一步是Networking Options界面。在这里,我们可以激活或者关闭TCP/IP网络,并且可以配置连接到MySQL的端口号,默认是3306,实际上我们可以使用任何没有使用的端口。这个界面中的另一个选项可以打开或关闭严格模式,推荐选择打开严格模式,除非你知道要改变什么。参见http://dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html了解更多信息。做出自己的选择并单击Next按钮继续。

提示:


别忘了修改防火墙规则以允许数据流从3306端口(或者任何你确定用于MySQL的端口)通过。

11.Networking Options界面之后是Character Set选项。默认的选项是Standard Character Set,这使得整个数据库都采用Latin1。也可以选择“Best Support for Multilingualism”选项,这使得UTF8作为字符集。UTF8允许我们在一个单个字符集中存储多种语言。如果你想要使用某个特定的字符集,选择“Manual Selected Default Character Set”单选按钮,然后从下拉列表中选择相应的字符集。在做出选择之后,单击Next按钮继续。

12.推荐把MySQL作为一项服务安装。选中“Install as Windows Service”复选框并且为服务选择一个名字。“Launch the MySQL Server Automatically”复选框是可选的。还可以选择把MySQL bin目录添加到Windows PATH,以便更容易地从命令提示符窗口调用MySQL,如果这种情况很适合你,就选中这个复选框。完成了选择之后,单击Next按钮继续。

13.Security Options配置界面也是所有配置界面中最重要的一个。如图2-10所示,使用这一配置界面来设置一个root用户的密码。输入密码两次以便确认。不要选中“Enable Root Access From Remote Machines”复选框,除非你真的知道在做什么。通常,root用户连接只允许来自服务器本地。另外,可以创建一个匿名用户,但出于安全原因,并不建议这么做。完成了这个界面中的配置选项之后,单击Next按钮继续。

图2-10 通过MySQL配置,为root创建一个密码

14.配置过程还保留了另一个更多的步骤,单击Execute按钮可以开始这一步骤。在向导完成了各种配置步骤之后,将会看到如图2-11所示的一个配置界面,表示配置文件已经创建,并且MySQL服务已经启动。单击Finish按钮结束向导。

图2-11 MySQL配置向导完成其任务

安装和配置向导的完成会产生一个运行的MySQL服务,并且在C:\Program Files\MySQL\ MySQL Server 5.5\目录下产生一个自定义的my.ini文件。

提示:


可以使用任何文本编辑器来手动编辑my.ini文件,在修改之后必须重新启动MySQL服务器。

现在MySQL已经启动了,跳转到2.7节。如果在安装中碰到任何问题,请查阅2.6节。

如果在MySQL安装过程中碰到任何问题,首先应该查看MySQL手册的附录A,它位于http://dev.mysql.com/doc/refman/5.5/en/problems.html

下面只是一些常见的安装问题。

如果在阅读了MySQL手册的附录A之后仍然有问题,那么发送邮件到MySQL邮件列表(参见http://lists.mysql.com/了解更多信息)可能会知道结果。你也可以从MySQL AB购买支持协议。

不管是在Windows、Linux/UNIX还是Mac OS X上运行MySQL,也不管是管理自己的服务器还是使用Internet服务提供商所提供的系统,你都必须理解基本安全规则。如果你通过Internet服务提供商访问MySQL,需要注意几个服务器安全性的方面。例如,一个非root用户不能够修改或绕过身份验证。不幸的是,很多Internet服务提供商对安全规则毫不在意,让他们的客户暴露在外,并且在很大程度上,他们没有意识到风险。

增强MySQL的安全性从服务器的启动阶段就开始了。如果你不是服务器的管理员,就不能改变服务器的安全设置,但是,你肯定可以查看服务器的安全性,并且向Internet服务提供商报告弱点。

如果MySQL安装在Linux/UNIX或Mac OS X上,主要关心的问题应该是MySQL守护程序的所有者,它不应该是root。把守护程序作为一个非root用户的进程运行,例如mysql或database,将会限制恶意用户获得访问服务器或者覆盖文件的能力。

提示:


可以在Linux/UNIX或Mac OS X系统上使用ps(进程状态)命令来验证进程的所有者。

如果看到MySQL在系统上作为root用户运行,应立即联系你的Internet服务提供商并且提出意见。如果你是一个服务器管理员,应该作为非root用户启动MySQL进程,或者在启动命令行里指定首选的用户名。

例如,如果你想要作为用户mysql运行MySQL,使用如下命令。

然而,启动MySQL的推荐方法是通过MySQL安装的bin目录中的mysqld_safe启动脚本来进行。

你可以以几种不同的方式连接到MySQL监视器或者其他的MySQL应用程序,每种方式都有安全性风险。如果你的MySQL安装在自己的工作站上,和那些必须使用一个网络链接连接到他们的服务器的用户相比,你可以少些担忧。

如果MySQL安装在工作站上,最大的安全风险就是MySQL监视器或MySQL GUI管理工具没有关注到工作站的启动和运行。在这种情况下,任何人都可以利用并删除数据,插入假的数据,或者关闭服务器。如果你必须让工作站在一个公共领域内保持无监控状态,就使用一个带有密码的屏幕保护或锁定屏幕的机制。

如果MySQL安装在你的网络之外的一个服务器上,连接的安全性应该受到关注。就像任何通过Internet的数据传输一样,数据可能被截获。如果传输是未加密的,截获数据的人就可以将它们拼接起来并使用信息。假设未加密传输的数据是你的MySQL登录信息,一个恶意者现在就可以伪装成你来访问数据库了。

防止这种情况发生的一种方法,就是通过一个安全的链接(例如,Secure Shell,即SSH)来连接到MySQL。通过SSH,所有到远程机器的传输和来自远程机器的传输都是加密的。类似地,如果你使用一个基于Web的管理界面,例如phpMyAdmin(参见http://www.phpmyadmin.net/以了解更多信息,注意,phpMyAdmin在第1章所介绍的基于XAMPP的快速安装中,已经安装过了),或者你的Internet服务提供商所使用的另一种工具,请通过一个安全的HTTP连接来访问该工具。

在下一节中,你将会了解到MySQL的权限系统,这有助于使服务器获得更深层次的安全保护。

MySQL权限系统总是起作用的。当你第一次尝试连接MySQL服务器的时候,并且对于每一个后续的动作,MySQL都会检查以下3件事情。

所有这些信息都存储在一个名为mysql的数据库中,当安装MySQL的时候,自动创建该数据库。在mysql数据库中,有如下几个和权限相关的表。

在本章中,当你向MySQL添加一些示例用户的时候,这些表将变得更为重要。现在,只需要记住这些表的存在,并且为了让用户完成操作,这些表中必须拥有相关的数据。

正如你所了解的,在身份验证过程中,MySQL检查3件事情。和这3件事情相关的动作分如下两步执行。

1.MySQL查看你的连接所来自的主机,以及所使用的用户名和密码。如果主机允许连接,你的用户名对应的密码正确,并且用户名和分配给该主机的一个用户名匹配,MySQL就转到第二步。

2.对于你尝试执行的任何一条SQL命令,MySQL验证你能够对该数据库、表和字段执行此操作。如果步骤1失败,你将会看到一个相关的错误,并且不能继续步骤2。例如,假设你使用一个用户名joe和一个密码abc123连接到MySQL,并且想要访问一个名为myDB的数据库。如果由于如下原因导致这些连接变量的任何一个不正确,你都会接收到一条类似如下的错误消息。

你可能看到如下的一条错误消息。

如果带有密码abc123的用户joe允许从localhost连接到myDB数据库,MySQL将会在这个过程的第二个步骤中检查joe所能执行的操作。为了便于说明,假设jow允许查询数据但是不允许插入数据。事件和错误的序列就会如下所示。

基于操作的许可在具有多层级管理的应用程序中很常见。例如,如果已经创建了包含个人财务数据的应用程序,你必须确保对记账级别的成员只赋予SELECT权限,而对具有安全许可的主管级成员赋予INSERT和DELETE权限。

在大多数情况下,当你通过一个Internet服务提供商访问MySQL的时候,只有一个用户和一个数据库可供使用。默认情况下,一个用户将能够访问该数据库中所有的表,并且允许执行所有的命令。在这种情况下,作为开发者,你的职责就是通过自己的编程开发出一个安全的应用程序。

然而,如果你是自己的服务器的管理员,或者Internet服务提供商允许你任意添加多个数据库和用户,并且可以修改自己的用户的访问权限,下面几个小节将带你学习如何做到这些。

通过一个第三方应用程序来管理服务器,这为你提供了一个简单的方法来添加用户,只要使用一个类似向导的过程或一个图形化界面。然而,通过MySQL监视器添加用户并不难,尤其是如果你理解了MySQL所使用的安全检查点,这我们刚才已经学习过。

添加新用户的最简单的方法就是使用GRANT命令。作为root用户连接到MySQL,我们就可以使用一条命令来建立一个新用户。另一种方法是使用INSERT语句修改mysql数据库中所有相关的表,这需要我们知道用来存储许可的表的所有字段。第二种方法的效果和GRANT命令相同,但是比GRANT命令复杂得多。GRANT命令的简单语法如下。

下面是我们可以授予的一些常见的权限。如果需要完整的权限列表,请参考位于http://dev.mysql.com/doc/refman/5.5/en/grant.html的MySQL手册的GRANT条目。

例如,如果你想要创建一个带有99hjc!5密码的用户john,他在名为myDB的数据库中的所有表上都有SELECT和INSERT权限,并且希望这个用户能够从任何主机连接,那么,使用如下命令。

注意两个通配符*和%的使用。这两个通配符用来代替值。在这个例子中,*代替了数据库的全部表,而%代替了已知的世界中的所有主机的列表,这实际上是非常长的一个列表。

这里还有使用GRANT命令添加用户的另外一个例子。这次是添加一个带有密码45sdg11的用户jane,他在名为myCompany的数据库的一个名为employees的表上具有ALL权限。这个新的用户只能从一个特定的主机连接。

如果你知道janescomputer.company.com有一个IP地址63.124.45.2,可以用这个地址来替代命令中的主机名部分,命令如下所示。

添加用户的时候需要注意一点:总是使用密码并且确保这个密码是不易被破解的。

如果你使用GRANT命令来添加用户,改变会立即生效。要绝对确保这一点,你可以在MySQL监视器中使用一条FLUSH PRIVILEGES命令来重新载入授权表。

移除权限和添加权限一样简单,只不过是使用REVOKE命令,而不是使用GRANT命令。REVOKE命令的语法如下。

我们授权许可来使用INSERT命令,采用同样的方式,我们也可以通过使用DELETE命令从mysql数据库的表中删除记录,从而取消前面的授权许可。然而,这需要你熟悉字段和表,并且使用REVOKE命令会更容易和安全。

要把用户john向myCompany数据库中的INSERT能力收回,可以使用如下一条REVOKE语句。

REVOKE INSERE
ON myCompany.*
FROM john@hostname

对权限表中的数据的修改会立刻生效,但是,为了让服务器立刻意识到你的修改,在MySQL监视器中可以使用FLUSH PRIVILEGES命令。

在Windows和Mac OS X上安装MySQL是一个简单的过程,因为有一个基于向导的安装方法。Linux/UNIX用户没有一个基于向导的安装过程,但是,按照一组简单的命令来拆包MySQL客户机和服务器二进制文件也并不困难。Linux/UNIX用户也可以使用RPM来安装MySQL。

安全性总是首要的问题,可以采取几个步骤来确保安全地安装MySQL。即便你不是服务器管理员,还是应该能够认识到安全漏洞并且提醒服务器管理员注意。

MySQL服务器不应该作为root用户运行。此外,在MySQL中创建用户时总是应该有一个密码,并且他们获取的权限也应该是定义好的。

对于每一次请求,MySQL都是在两个步骤的过程中使用权限表,从而知道你是谁以及你从哪里连接而来,并且信息的每一部分必须和权限表中的一个条目相匹配。此外,所使用的用户身份必须有执行你所做请求的类型的具体权限。

可以使用GRANT命令来添加用户权限,它使用一个简单的语法来向mysql数据库中的user表添加条目。REVOKE命令通常也很简单,用来移除这些权限。

Q:如何完全删除一个用户?REVOKE命令只是删除了权限。

A:要完全从权限表中删除一个用户,必须对mysql数据库的user表使用一个专门的DELETE命令。

Q:如果我告诉我的Internet服务提供商停止把MySQL当作root进程运行,而他却不听,该怎么办?

A:换一家Internet服务提供商。如果你的Internet服务提供商没有认识到像把数据库这样重要的东西当作root用户进程运行的风险,并且不听取你的要求,就另外找一家提供商。有些提供商只需每月$2.95的费用(甚至是免费),他们不会将重要进程作为root用户进程运行。

这个实践练习设计用来帮助你预测可能的问题、复习已经学过的知识,并且开始把知识用于实践。

1.判断真假:对于从一个远程主机到MySQL的安全连接,SSH是完全可接受的方法。

2.每次向MySQL服务器发出一个请求的时候,MySQL检查哪3部分信息?

3.要授予localhost上的名为bill的用户对于BillDB数据库的所有表的SELECT、INSERT和UPDATE权限,使用什么命令?另外,为了安全性的考虑,推荐的这条语句中漏掉了哪些信息?

1.真。SSH将主机之间的数据加密,因此,确保了到服务器的连接是安全的。

2.你是谁,你从哪里访问,允许你执行什么操作。

3.命令是

遗漏的重要信息是用户的密码。

1.考虑一下你希望在表级限制访问命令的情况。例如,你不希望实习级别的管理员拥有关闭公司数据库的权限。

2.如果你在MySQL中有管理员权限,使用几条GRANT命令创建一些假的用户。你所指定的表和数据库实际上是否存在无关紧要。

3.使用REVOKE来移除在思考题2中所创建的用户的某些权限。


相关图书

轻松学PHP
轻松学PHP
PHP、MySQL和JavaScript入门经典(第6版)
PHP、MySQL和JavaScript入门经典(第6版)
PHP和MySQL Web开发学习指南
PHP和MySQL Web开发学习指南
Yii2框架从入门到精通
Yii2框架从入门到精通
B/S项目开发实战 HTML+CSS+jQuery+PHP
B/S项目开发实战 HTML+CSS+jQuery+PHP
Tomcat内核设计剖析
Tomcat内核设计剖析

相关文章

相关课程