重磅推荐
【产品特色】

【编辑推荐】
随着MySQL受欢迎程度的提高,关于如何通过MySQL解决具体问题的疑问越来越多,这本书也应运而生。当需要快速的解决方案或技术时,这本手册里的资源可以为没有时间从头解决MySQL问题的程序员或专家提供大量简短且重点突出的代码、数百个完整的示例,以及清晰简明的解说。“本书是一本真正的经典之作,也是长期以来*秀的MySQL案例集。书中涵盖了初学者所需的基础知识,同时也为高级用户呈现了MySQL的*发展。书中丰富的技巧对MySQL专业人士来说更是难能可贵。”——Ulf WendelMySQL高级软件工程师,mysqlnd PHP库合伙创始人
【内容简介】
本书主要面向数据库初学者和专家,以及Web开发人员,经过更新后涵盖了MySQL*版的强大功能。本书侧重于使用Python、PHP、Java、Perl和Ruby的API进行编程。本书包含两百多个技巧,你可以从中学习:使用mysql客户端,编写基于MySQL的程序。建表、加载数据,以及从表中选择数据。存储、获取和处理字符串。使用日期和时间。排序查询结果,生成汇总信息。使用存储例程、触发器和计划事件。导入、导出、验证,以及重新格式化数据。执行事务,统计应用。处理Web输入,根据查询结果生成Web网页。使用MySQL进行Web会话管理。安全防范和服务器管理。
【作者简介】
Paul DuBois是著名的“MySQL Reference Manual”的主要贡献者之一,多年来这本手册一直给予了MySQL管理员和数据库开发人员很大的支持。他是Oracle公司负责MySQL文档团队的成员,还著有《MySQL》等其他著作。
【目录】
目录
前言1
第1章 客户端程序mysql.17
1.0 概述17
1.1 设置MySQL用户账号18
1.2 创建数据库和示例表20
1.3 找不到mysql22
1.4 指定mysql的命令选项24
1.5 以交互的方式执行SQL语句29
1.6 执行从文件或程序中读取的SQL语句31
1.7 控制mysql输出的路径和格式.33
1.8 在SQL语句中使用用户定义的变量.39
第2章 编写基于MySQL的程序.42
2.0 概述42
2.1 连接数据库与断开连接45
2.2 检查错误59
2.3 编写库文件.67
2.4 执行语句并获取结果81
2.5 处理语句中的特殊字符和NULL值96
2.6 处理标识符中的特殊字符105
2.7 识别结果集中的NULL值107
2.8 获取连接参数.111
2.9 结论和建议120
第3章 从表中查询数据.121
3.0 概述.121
3.1 指定查询的行与列.122
3.2 指定查询结果中列的别名124
3.3 查询结果排序.128
3.4 过滤重复行129
3.5 处理NULL值.131
3.6 在程序中比较NULL值.133
3.7 通过视图简化查询.134
3.8 多表查询.135
3.9 截取查询结果的开头、末尾或中间部分137
3.10 当LIMIT要求“错误”的排序时该怎么办141
3.11 利用表达式计算LIMIT值.142
第4章 表管理144
4.0 概述.144
4.1 克隆表144
4.2 将查询结果保存到表中.145
4.3 创建临时表148
4.4 生成*的表名150
4.5 检查或更改表的存储引擎152
4.6 通过mysqldump复制表.153
第5章 字符串156
5.0 概述.156
5.1 字符串的属性.157
5.2 字符串的数据类型.161
5.3 设置客户端连接的字符集163
5.4 字符串字面量的定义165
5.5 检查或更改字符串的字符集或排序规则167
5.6 转换字符串的大小写170
5.7 控制字符串比较中的大小写敏感度172
5.8 利用SQL模式进行模式匹配175
5.9 使用正则表达式进行模式匹配178
5.10 分割或连接字符串182
5.11 搜索子字符串185
5.12 设置MySQL用户账号.186
5.13 用短语进行全文检索191
5.14 全文检索中必须出现或禁止出现的词193
5.15 全文检索的词组查找194
第6章 日期与时间196
6.0 概述.196
6.1 选择时间数据类型.197
6.2 使用小数秒支持199
6.3 更改MySQL的日期格式.200
6.4 设置客户端时区204
6.5 切换日期时间值的时区.206
6.6 获取当前的日期或时间.207
6.7 使用TIMESTAMP或DATETIME追踪行的修改时间.208
6.8 提取日期或时间值的各部分211
6.9 合成日期或时间值.216
6.10 时间值和基本单位之间的转换.218
6.11 计算日期或时间之间的间隔222
6.12 日期或时间值的加法运算.227
6.13 计算年龄232
6.14 查询一个月的*天、*后一天或当月的天数234
6.15 通过子字符串替换来计算日期.236
6.16 计算星期238
6.17 查询某周中某天的日期238
6.18 计算闰年241
6.19 规范化非ISO格式的日期字符串245
6.20 基于时间特征的查询246
第7章 查询结果的排序.250
7.0 概述.250
7.1 通过ORDER BY对查询结果排序251
7.2 利用表达式进行排序255
7.3 查询结果中不包含排序列256
7.4 控制字符串排序的大小写区分260
7.5 日期排序.263
7.6 利用列值的子字符串排序267
7.7 利用固定长度的子字符串排序268
7.8 利用可变长度的子字符串排序271
7.9 按域名顺序排列主机名.276
7.10 按数字顺序排序用点分割的IP值278
7.11 将值移动到排序结果的开头或*后.281
7.12 自定义排序284
7.13 枚举值的排序285
第8章 汇总数据289
8.0 概述.289
8.1 基本的汇总技巧291
8.2 通过创建视图简化汇总.298
8.3 查找与*小值和*值相关的值298
8.4 控制MIN()和MAX()是否区分字符串大小写300
8.5 按子群汇总302
8.6 汇总与NULL值306
8.7 仅选择具有特定特征的组309
8.8 通过计数来确定值是否*310
8.9 按表达式结果分组.311
8.10 汇总非分类数据312
8.11 查找*小或*的汇总值.315
8.12 基于日期的汇总317
8.13 同时使用分组和总体的汇总值.319
8.14 生成包含汇总和列表的报告322
第9章 存储例程,触发器和计划事件326
9.0 概述.326
9.1 创建复合语句对象.329
9.2 利用存储函数封装计算.331
9.3 通过存储过程返回多个值333
9.4 利用触发器动态设置列的默认值334
9.5 利用触发器模拟基于函数的索引336
9.6 在其他日期和时间类型中模拟TIMESTAMP属性339
9.7 利用触发器记录变更341
9.8 使用事件来计划数据库操作344
9.9 编写辅助例程动态执行SQL346
9.10. 处理存储程序中的错误.347
9.11 利用触发器预处理或拒绝数据.351
第10章 元数据.354
10.0 概述.354
10.1 获取受语句影响的行数356
10.2 获取结果集的元数据359
10.3 确认语句是否会生成结果集369
10.4 使用元数据来格式化查询输出.369
10.5 查看数据库和表或检查其存在性373
10.6 访问列的定义375
10.7 获取ENUM和SET列的信息380
10.8 获取服务器的元数据382
10.9 编写适合MySQL服务器版本的应用程序.383
第11章 导入和导出数据386
11.0 概述.386
11.1 使用LOAD DATA和mysqlimport导入数据390
11.2 导入CSV文件401
11.3 导出MySQL的查询结果402
11.4 导入和导出NULL值.404
11.5 编写数据导出程序406
11.6 数据文件格式的转换411
11.7 提取并重新排列数据文件的列.412
11.8 MySQL和Microsoft Excel之间的数据交换415
11.9 以XML的格式导出查询结果417
11.10 将XML导入到MySQL中420
11.11 猜测数据文件中的表结构.423
第12章 验证与格式化数据427
12.0 概述.427
12.1 通过SQL模式拒绝错误的输入值.428
12.2 验证和转换数据430
12.3 使用模式匹配来验证数据.433
12.4 使用模式匹配广泛的内容类型.436
12.5 使用模式匹配数字值436
12.6 使用模式匹配日期或时间.438
12.7 使用模式匹配电子邮件地址或URL442
12.8 使用表的元数据验证数据.443
12.9 使用查找表验证数据447
12.10 将两位数的年份值转换成四位数的形式449
12.11 检查日期或时间各部分的有效性451
12.12 编写处理日期的工具程序.453
12.13 导入非ISO格式的日期值.459
12.14 使用非ISO格式导出日期.460
12.15 后记461
第13章 序列.463
13.0 概述.463
13.1 创建自增列并生成序列值.464
13.2 序列的定义467
13.3 行的删除对序列造成的影响469
13.4 设置MySQL用户账号.471
13.5 重新编号现有的序列475
13.6 扩展序列的范围477
13.7 重用序列的*值478
13.8 按特定的顺序给行重新编号479
13.9 添加序列480
13.10 同时管理多个自动增加的值481
13.11 通过自动增量值关联表482
13.12 将序列作为计数器485
13.13 生成重复序列488
第14章 连接与子查询490
14.0 概述.490
14.1 表之间的结合491
14.2 查找表之间不匹配的行499
14.3 识别并删除不匹配或独立存在的行.504
14.4 表的自我比较507
14.5 生成主从复合结构列表和汇总.511
14.6 列举多对多的关系515
14.7 查找每组的*小值或*值518
14.8 利用连接填充或找出列表中的缺口.521
14.9 利用Join控制查询的排序524
14.10 在程序中引用连接输出的列名.526
第15章 统计技术528
15.0 概述.528
15.1 计算描述性统计529
15.2 分组描述性统计533
15.3 生成频率分布534
15.4 统计缺失的值537
15.5 计算线性回归或相关系数.540
15.6 生成随机数542
15.7 随机排序544
15.8 随机选择数据547
15.9 计算相邻两行之差548
15.10 查找累积总和与移动平均值551
15.11 指定排名555
15.12 计算团队排名559
第16章 处理重复数据565
16.0 概述.565
16.1 防止表中出现重复数据566
16.2 处理重复的加载数据568
16.3 识别与统计重复数据的数量572
16.4 移除表中的重复数据576
第17章 事务处理581
17.0 概述.581
17.1 选择事务存储引擎582
17.2 使用SQL执行事务583
17.3 在程序内执行事务585
17.4 Perl程序中的事务处理.587
17.5 Ruby程序中的事务处理.589
17.6 PHP程序中的事务处理590
17.7 Python程序中的事务处理591
17.8 Java程序中的事务处理592
第18章MySQL的Web应用简介593
18.0 概述.593
18.1 生成网页的基本方法594
18.2 通过Apache运行Web脚本597
18.3 通过Tomcat运行Web脚本607
18.4 编码Web输出中的特殊字符612
第19章 根据查询结果生成网页的内容621
19.0 概述.621
19.1 根据查询结果显示段落622
19.2 根据查询结果显示列表624
19.3 根据查询结果显示表格635
19.4 根据查询结果显示超链接.640
19.5 根据数据库的内容创建导航索引643
19.6 存储图像或其他二进制数据649
19.7 提供图像或其他二进制数据656
19.8 提供横幅广告659
19.9 提供查询结果的下载661
第20章 利用MySQL处理Web输入664
20.0 概述.664
20.1 编写生成Web表单的脚本.667
20.2 根据数据库的内容创建单选表单元素670
20.3 根据数据库内容创建多选的表单元素686
20.4 将数据库内容加载到表单中692
20.5 收集Web输入697
20.6 验证Web输入707
20.7 将Web输入存储到数据库.708
20.8 处理文件上传711
20.9 基于Web的数据库搜索718
20.10 生成上下页的链接721
20.11 生成点击标题排序的表格.726
20.12 网页的访问次数.730
20.13 记录网页的访问日志.734
20.14 利用MySQL记录Apache的日志735
第21章 基于MySQL的Web会话管理743
21.0 概述.743
21.1 在Perl应用程序中使用基于MySQL的会话.746
21.2 在Ruby应用程序中使用基于MySQL的存储752
21.3 在PHP会话管理器中使用基于MySQL的存储756
21.4 利用MySQL与Tomcat存储会话信息766
第22章 服务器管理775
22.0 概述.775
22.1 配置服务器775
22.2 管理插件接口778
22.3 控制服务器的日志记录780
22.4 日志文件的轮转与淘汰784
22.5 轮转日志表或淘汰日志表的记录786
22.6 监控MySQL服务器787
22.7 备份的创建和使用799
第23章 数据库的安全801
23.0 概述.801
23.1 了解mysql.user表.802
23.2 管理用户账号803
23.3 密码策略808
23.4 检查密码强度810
23.5 密码过期811
23.6 设置新密码813
23.7 重置过期密码813
23.8 查找并修复不安全的账号.814
23.9 禁止账号使用MySQL 4.1之前的密码818
23.10 查找并删除匿名账号.819
23.11 修改“任何主机”和“多个主机”的账号820
【前言】
MySQL数据库管理系统很受欢迎,原因有很多,例如速度快、易于设置、使用和管理,可以在各种版本的UNIX和Windows下运行,基于MySQL的程序可以用多种语言编写。随着MySQL流行度的提高,用户常有如何解决特定问题的疑问,为他们做解答的需求也应运而生。这便是本书的主旨所在:当使用MySQL遇到特定类型的问题需要攻克时,你可以把本书当作一本唾手可得的资料,从中找到快速的解决方案或技术。因为本书是一本手册,所以理所当然提供了很多案例:你可以直接遵循书中的说明,而无需从头开发自己的代码。本书的编写采用了问题-解决方案的格式,非常实用,且内容易于阅读和理解。 书中包含很多小节,每个小节都描写了如何编写一个查询语句、应用一项技术或开发一段脚本来解决特定范围内的一个问题。本书不会教你开发成熟复杂的应用程序,但它可以帮助你解决在开发自己的应用程序时遇到的实际困难。例如,很常见的一个问题是,“在编写查询语句时,如何处理数据值中出现的引号和特殊字符?”这其实并不难,但当你不确定应该从何入手时就会感到沮丧。本书演示了解决问题的方法,它揭示了从哪里开始及如何继续。这些知识可以反复为你提供帮助,因为在掌握了解决方法后,你可以将该技术应用到任何类型的数据,例如文本、图像、声音或视频剪辑、新闻文章、压缩文件或PDF文档等。另一个常见问题是,“我可以同时访问多个表的数据吗?”答案是“可以”,这很容易做到,因为你只需要了解正确的SQL语法。但是,只有看到本书中的示例,你才能清楚地知道做法。
你可以从本书中学到的其他技巧,包括:
? 如何使用SQL来查询、排序和汇总行。
? 如何查找表之间的匹配或不匹配。
? 如何执行事务。
? 如何计算日期或时间之间的间隔,包括年龄计算。
? 如何识别或移除重复的行。
? 如何正确使用LOAD DATA读取数据文件或查找文件中的非法值。
? 如何通过严格模式来防止将错误的数据输入到数据库。
? 如何生成序列号并用作*的行标识符。
? 如何将视图当作“虚拟表”使用。
? 如何编写存储过程和函数;如何设置触发器,并在插入或更新表的行时激活触发器,以便执行特定的数据处理操作;如何使用事件调度程序按计划运行查询。
? 如何根据数据库的内容生成网页。
? 如何管理用户账号。
? 如何控制服务器日志。
了解如何使用MySQL的其中一个方面是了解如何与服务器通信,即如何使用SQL——结构化查询语言。因此,本书的一个重点就是使用SQL来编写回答特定类型问题的查询。学习和使用SQL的一个有用工具是mysql客户端程序,随本书一起发行的MySQL包中有该程序。你可以在交互式的模式下使用该客户端将SQL语句发送到服务器并查看结果。这非常便利,因为它提供了SQL的直接接口。实际上,我们将在第1章专门讨论客户端程序mysql。但是,仅仅能够执行SQL查询还不够。通常从数据库提取的信息需要进一步的处理,或者以特定的方式呈现。如果查询语句间有复杂的相互关系,例如当需要根据一个查询的结果来执行其他查询时,该怎么办?如果你需要生成一份具有特定格式要求的专业报告时,该怎么办?这些问题是本书的另一个重点:如何通过应用程序编程接口(API)编写与MySQL服务器交互的程序。
在掌握了如何在编程语言的上下文中使用MySQL后,你就可以通过以下方式开发MySQL的功能:? 可以先将查询结果保存起来,然后再重复使用。? 可以充分利用通用编程语言的功能,根据查询成功或失败,以及返回的内容做决定,然后再采取相应的动作。? 可以随心所欲地格式化和显示查询结果。如果你正在编写命令行脚本,则可以生成纯文本。如果是基于Web的脚本,则可以生成HTML表格。如果打算将提取的信息传输到其他系统的应用程序,则可以生成XML格式的数据文件。
SQL与通用编程语言的结合可以为执行查询和处理结果提供非常灵活的框架。编程语言提高了执行复杂数据库操作的能力。但这并不意味着这本书很复杂。本书的内容将尽量保持简单,同时展示了如何使用易于理解和掌握的技术来构建小的功能块。你可以自由将这些技术应用到自己的程序中,并据此构建任意复杂的应用程序。虽然遗传密码的基础只有四种核酸,但这些基本元素一旦结合到一起,就可以产生我们周围不计其数的生命物种。虽然音阶中只有12个音符,但是经过技艺高超的作曲家之手,将它们交织在一起就可以产生丰富多彩变化无穷的乐曲。同样的道理,在你掌握了一系列简单的案例后,发挥你的想象力,将它们应用到你想要解决的数据库编程问题上,即使你创建的应用程序不是艺术作品,但也肯定会非常有用,而且还会帮助你和其他人提高工作效率。本书面向的读者群对于所有想使用MySQL的人来说,本书都很有用,包括想在个人项目(例如博客或维基)中使用数据库的个人,以及专业数据库和Web开发人员。本书也适用那些目前没有使用MySQL但有此意向的人。例如,如果你想学习数据库,但是觉得Oracle等大型数据库系统可能有点令人生畏,那么MySQL就很适合你(也许不应该这么说。因为Oracle在2010年买下了MySQL,现在是本书作者的老板)。
如果你对MySQL很陌生,那么你会在本书中找到许多新颖的使用方法。如果你有使用MySQL的经验,那么你可能很熟悉书里提出的许多问题,但是以前你可能没有必要去解决它们,而现在有了这本书就可以大大节省时间。你可以利用书中给出的案例,将它们应用到自己的程序中,从而避免从头开始编写代码。本书的内容涵盖了从入门到高级的各个方面,所以如果某一个案例中描述的技术对你来说太过于简单,那么可以直接跳过。相反,如果你无法理解某一个案例,那么可以先放在一边,等稍后阅读了其他一些案例后再回过头来看。本书主要内容很可能当你阅读本书的时候,正在尝试开发应用程序,但不确定如何实现其中的某些部分。在这种情况下,你已经清楚需要解决的问题类型,所以可以查看目录或索引,找到能够教你解决问题的相应章节。
理想情况下,这些章节的内容会完全符合你的想法。如果不是,那么你可以根据手头的问题,通过调整某个案例来解决类似的问题。我会解释每种技术所涉及的原则,所以你可以按照应用程序的特定需求进行修改。阅读本书的另一种方法是,你并没有特别的问题,但是仍然可以通读本书。这样做可以让你更全面地了解MySQL的功能,因此我建议你偶尔翻阅一下本书。如果你能够了解本书中讲解的问题,那么它可以成为一个更高效的工具。
随着深入后面的章节,有时你会发现这些章节使用了前面章节所介绍的技术。在同一章中亦是如此,后面的小节经常会用到前面小节介绍过的技术。如果你翻开某一章,发现某一节用到的技术你并不熟悉,那么可以查看目录,找到介绍了该技术的小节。例如,如果案例中用到了你不熟悉的ORDER BY子句对查询结果进行排序,那么你可以回到第7章,阅读有关各种排序的方法及对它们工作原理的讨论。下面是每章的概述,希望能让你对本书的内容有大致的了解。
第1章,客户端程序mysql。本章介绍了如何使用标准的MySQL命令行客户端。mysql通常是人们使用MySQL时,*个会想到的也是*主要的接口,所以了解如何使用它的功能非常重要。通过该应用程序,你能够以交互的方式执行查询并查看结果,因此在快速实践中非常有用。你也可以在批处理模式下利用它来执行封装好的SQL脚本,或将它的输出发送到其他程序。除此之外,本章还讨论了其他使用mysql的方法,例如如何增强输出的可读性以及生成不同格式的输出等。
第2章,编写基于MySQL的程序。本章演示了MySQL编程的基本要素:如何连接到服务器、发起查询、获取结果,以及处理错误。本章还讨论了如何在查询中处理特殊字符和NULL值,如何编写库文件来封装常用操作的代码,以及收集连接到服务器所需参数的各种方法。
第3章,从表中查询数据。SELECT语句是从MySQL服务器检索数据的主要手段,本章涵盖了SELECT语句的几个方面:指定检索的列与行,处理NULL值,以及选择查询结果的某一部分。后面的章节将更详细地介绍其中的一些主题,本章概述了它们的基本概念。如果你需要了解有关行选择方面的背景介绍,或者对SQL知识了解不多,那么应该仔细阅读本章。
第4章,表管理。本章介绍了表的克隆,将结果复制到其他表、使用临时表,以及检查或更改表的存储引擎。
第5章,字符串。本章介绍了如何处理字符串数据。本章涵盖了字符集和排序规则、字符串比较、处理区分大小写的问题、模式匹配、拆分和组合字符串,以及执行全文搜索。
第6章,日期与时间。本章介绍了如何使用时间数据。本章描述了MySQL的日期格式以及如何按照其他格式显示日期值。本章还介绍了如何使用MySQL特殊的TIMESTAMP数据类型,如何设置时区,如何在不同时间单位之间进行转换,如何执行时间间隔的计算或根据一个日期生成另一个日期,以及如何执行闰年计算。
第7章,查询结果的排序。本章描述了如何按所需的顺序排列查询结果的行。包括指定排序方向、处理NULL值、字符串大小写的处理,以及按整个日期值或部分日期值进行排序。本章还提供了一些示例,说明如何对特殊类型的值进行排序,例如域名、IP地址和ENUM值。
第8章,汇总数据。本章介绍了评估一组数据的一般特征的技术,例如数量或*小值、*值和平均值。
第9章,存储例程,触发器和计划事件。本章描述了如何编写存储在服务器端的存储函数和过程,在修改表时激活的触发器,以及按计划执行的事件。
第10章,元数据。本章讨论了如何获取有关查询返回的数据的信息,例如结果中的行数或列数,或每列的名称和数据类型。本章还介绍了如何查看MySQL中可用的数据库和表,或查看表的结构。
第11章,导入和导出数据。本章介绍了如何在MySQL和其他程序之间传递信息。包括如何使用LOAD DATA,将文件从一种格式转换为另一种格式,以及确定适合数据集的表结构。
第12章,验证与格式化数据。本章描述了如何提取或重新排列数据文件中的列,检查和验证数据,以及重新格式化值,例如常常会以各种格式出现的日期。
第13章,序列。本章讨论了AUTO_INCREMENT列,MySQL生成序列号的机制。本章介绍了如何生成新的序列值或获取*值、如何重新排序列,以及如何使用序列生成计数器。本章还介绍了如何使用AUTO_INCREMENT值来维护表之间的主从关系,包括需要避免的陷阱。
第14章,连接与子查询。本章介绍了如何执行从多个表中选择行的操作。本章演示了如何通过比较表查找匹配或不匹配的数据,生成主从关系的列表和汇总信息,以及枚举多对多的关系。
第15章,统计技术。本章说明了如何生成描述性统计,频率分布,回归和相关性。本章还介绍了如何随机化一组行或从集合中随机选择行。
第16章,处理重复数据。讨论了如何识别,统计和移除重复的行,以及如何防止重复数据的发生。
第17章,事务处理。本章介绍了如何处理必须作为一个整体一起执行的多个SQL语句。本章讨论了如何控制MySQL的自动提交模式以及如何提交或回滚事务。
第18章,MySQL的Web应用简介。本章介绍了如何编写基于Web的MySQL脚本。Web编程可以根据数据库的内容生成动态的页面,或收集信息并存储到数据库中。本章讨论了如何为运行Perl、Ruby、PHP和Python脚本而配置Apache,以及如何为了运行用JSP编写的Java脚本而配置Tomcat。
第19章,根据查询结果生成网页的内容。本章演示了如何利用查询结果生成各种HTML结构,例如段落、列表、表格、超链接和导航索引。本章还描述了如何将图像存储到MySQL中以供以后检索和显示,以及如何生成可下载的结果集。
第20章,利用MySQL处理Web输入。本章讨论了如何通过Web获取用户的输入,并利用输入来创建新的数据库行或作为执行搜索的基础。本章主要介绍了表单处理,包括如何根据数据库中包含的信息构建表单元素,例如单选按钮、弹出菜单或复选框。
第21章,基于MySQL的Web会话管理。本章描述了如何在编写的应用程序内使用MySQL作为后备存储,并在多个请求间传递信息。如果你需要分阶段收集信息,或者根据先前的用户操作做出决策,那么本章的内容会非常有帮助行。第22章,服务器管理。本章主要面向的是数据库管理员。本章的内容包括服务器配置、插件接口、日志管理、服务器监控和备份。第23章,数据库的安全。本章也是有关管理员的知识。本章讨论了用户账号管理,包括创建账号、设置密码和分配权限。本章还介绍了如何实施密码策略、查找和修复不安全的账号,以及作废密码和重置过期的密码。
致谢感谢每一位读者,谢谢你们阅读本书。我希望这本书能给你带来帮助,也希望你能从中找到有用的信息。谢谢我的技术评审员Johannes Schlüter、Geert Vanderkelen和Ulf Wendel。他们提出了很多指正和建议,从各个方面提高了本书的创作,我深深地感谢他们的帮助。Andy Oram鼓动我写了本书的第三版,而且他也承担了本书的编者,Nicole Shelby将这本书推向了产品,Kim Cofer承担了本书的校对工作,而Lucie Haskins提供了本书英文原版书的索引。谢谢我的妻子Karen,她在写作过程中给予我的鼓励和支持让我感激不尽。

返回顶部