MySQL金典培训教程:10第七章.docx
《MySQL金典培训教程:10第七章.docx》由会员分享,可在线阅读,更多相关《MySQL金典培训教程:10第七章.docx(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第7章数据库安全本章要点点:v MySQQL权限限系统原原理v 如何授予予撤销用用户和授授权v 如何直接接修改授授权表v 授予用户户权限的的规范和和注意事事项作为一个个MySSQL的的系统管管理员,你你有责任任维护你你的MyySQLL数据库库系统的的数据安安全性和和完整性性。本文文主要主主要介绍绍如何建建立一个个安全的的MySSQL系系统,从从系统内内部和外外部网络络两个角角度,为为你提供供一个指指南。本章主要要考虑下下列安全全性有关关的问题题:l 为什么安安全性很很重要,你你应该防防范那些些攻击? l 服务器面面临的风风险(内内部安全全性),如如何处理理? l 连接服务务器的客客户端风风险(
2、外外部安全全性),如如何处理理? MySQQL管理理员有责责任保证证数据库库内容的的安全性性,使得得这些数数据记录录只能被被那些正正确授权权的用户户访问,这这涉及到到数据库库系统的的内部安安全性和和外部安安全性。内部安全全性关心心的是文文件系统统级的问问题,即即,防止止MySSQL数数据目录录(DAATADDIR)被被在服务务器主机机有账号号的人(合合法或窃窃取的)进进行攻击击。如果果数据目目录内容容的权限限过分授授予,使使得每个个人均能能简单地地替代对对应于那那些数据据库表的的文件,那那么确保保控制客客户通过过网络访访问的授授权表设设置正确确,对此此毫无意意义。外部安全全性关心心的是从从外部
3、通通过网络络连接服服务器的的客户的的问题,即即,保护护MySSQL服服务器免免受来自自通过网网络对服服务器的的连接的的攻击。你必须须设置MMySQQL授权权表(ggrannt ttablle),使使得他们们不允许许访问服服务器管管理的数数据库内内容,除除非提供供有效的的用户名名和口令令。下面就详详细介绍绍如何设设置文件件系统和和授权表表myssql,实实现MyySQLL的两级级安全性性。7.1 MySSQL的的权限系系统MySQQL有一一套先进进的但非非标准的的安全/授权系系统,掌掌握其授授权机制制是开始始操作MMySQQL数据据库必须须要走的的第一步步,对于于一个熟熟悉SQQL基本本操作的的
4、人来说说,也是是MySSQL所所有的知知识中比比较难以以理解的的一个部部分。本本节通过过揭开其其授权系系统的运运作机制制,希望望大家能能够可以以更好地地操作和和使用这这个优秀秀的数据据库系统统。 MySQQL的安安全系统统是很灵灵活的,它它允许你你以多种种不同方方式设置置用户权权限。一一般地,你你可使用用标准的的SQLL语句GGRANNT和RREVOOKE语语句做,他他们为你你修改控控制客户户访问的的授权表表,然而而,你可可能由一一个不支支持这些些语句的的老版本本的MyySQLL(在33.222.111之前这这些语句句不起作作用),或或者你发发觉用户户权限看看起来不不是以你你想要的的方式工工作
5、。对对于这种种情况,了了解MyySQLL授权表表的结构构和服务务器如何何利用它它们决定定访问权权限是有有帮助的的,这样样的了解解允许你你通过直直接修改改授权表表增加、删除或或修改用用户权限限,它也也允许你你在检查查这些表表时诊断断权限问问题。7.1.1授权权表的结结构通过网络络连接服服务器的的客户对对MySSQL数数据库的的访问由由授权表表内容来来控制。这些表表位于mmysqql数据据库中,并并在第一一次安装装MySSQL的的过程中中初始化化(运行行myssql_insstalll_ddb脚本本)。授授权表共共有5个个表:uuserr、dbb、hoost、tabbless_prriv和和col
6、lumnns_pprivv。7.1.1.11授权表表useer、ddb和hhostt的结构构和作用用表7-11 授授权表uuserr、dbb和hoost的的结构Userr表Db表Hostt表作用域列列HosttHosttHosttDbDbUserrUserrPasssworrd数据库/表的权权限列Alteer_pprivvAlteer_pprivvAlteer_pprivvCreaate_priivCreaate_priivDeleete_priivDeleete_priivDropp_prrivDropp_prrivIndeex_pprivvIndeex_pprivvIndeex_ppriv
7、vInseert_priivInseert_priivRefeerenncess_prrivRefeerenncess_prrivSeleect_priivSeleect_priivUpdaate_priivUpdaate_priivUpdaate_priivAlteer_pprivvAlteer_pprivvAlteer_pprivvFilee_prrivGrannt_pprivvGrannt_pprivvGrannt_pprivvProccesss_prrivRelooad_priivShuttdowwn_pprivv授权表的的内容有有如下用用途:l userr表userr表列出出可以连连
8、接服务务器的用用户及其其口令,并并且它指指定他们们有哪种种全局(超超级用户户)权限限。在uuserr表启用用的任何何权限均均是全局局权限,并并适用于于所有数数据库。例如,如如果你启启用了DDELEETE权权限,在在这里列列出的用用户可以以从任何何表中删删除记录录,所以以在你这这样做之之前要认认真考虑虑。 l db表db表列列出数据据库,而而用户有有权限访访问它们们。在这这里指定定的权限限适用于于一个数数据库中中的所有有表。 l hostt表hostt表与ddb表结结合使用用在一个个较好层层次上控控制特定定主机对对数据库库的访问问权限,这这可能比比单独使使用dbb好些。这个表表不受GGRANNT
9、和RREVOOKE语语句的影影响,所所以,你你可能发发觉你根根本不是是用它。7.1.1.22授权表表tabbless_prriv和和collumnns_pprivv的结构构和作用用表7-22 授授权表ttablles_priiv和ccoluumnss_prriv的的结构授权表ttablles_priiv授权表ccoluumnss_prriv作用域列列HosttHosttDbDbUserrUserrTablle_nnameeTablle_nnameeColuumn_namme权限列Tablle_pprivvColuumn_priiv其他列TimeestaampTimeestaampGrannto
10、rrMySQQL没有有rowws_pprivv表,因因为它不不提供记记录级权权限,例例如,你你不能限限制用户户于表中中包含特特定列值值的行。如果你你确实需需要这种种能力,你你必须用用应用编编程来提提供。如如果你想想执行建建议的记记录级锁锁定,你你可用GGET_LOCCK()函数做做到。授权表的的内容有有如下用用途:l tablles_priiv表tablles_priiv表指指定表级级权限,在在这里指指定的一一个权限限适用于于一个表表的所有有列。 l coluumnss_prriv表表coluumnss_prriv表表指定列列级权限限。这里里指定的的权限适适用于一一个表的的特定列列。 tabl
11、les_priiv和ccoluumnss_prriv表表在MyySQLL 3.22.11版版引进(与与GRAANT语语句同时时)。如如果你有有较早版版本的MMySQQL,你你的myysqll数据库库将只有有useer、ddb和hhostt表。如如果你从从老版本本升级到到3.222.111或更更新,而而没有ttablles_priiv和ccoluumnss_prriv表表,运行行myssql_fixx_prriviilegges_tabbless脚本创创建它们们。7.1.2用户户的权限限权限信息息用usser、db、hosst、ttablles_priiv和ccoluumnss_prriv表表被
12、存储储在myysqll数据库库中(即即在名为为myssql的的数据库库中)。在MyySQLL启动时时和在77.5权权限修改改何时生生效所说说的情况况时,服服务器读读入这些些数据库库表内容容。7.1.2.11数据库库和表的的权限下列权限限运用于于数据库库和表上上的操作作。l SELEECT允许你使使用SEELECCT语句句从表中中检索数数据。SSELEECT语语句只有有在他们们真正从从一个表表中检索索行是才才需要sseleect权权限,你你可以执执行某个个SELLECTT语句,甚甚至没有有任何到到服务器器上的数数据库里里的存取取任何东东西的许许可。例例如,你你可使用用myssql客客户作为为一个
13、简简单的计计算器: mysqql SELLECTT 1+1;mysqql SELLECTT PII()*2;l UPDAATE 允许你修修改表中中的已有有的记录录。 l INSEERT允许在表表中插入入记录l DELEETE允许你从从表中删删除现有有记录。 l ALTEER允许你使使用ALLTERR TAABLEE语句,这这其实是是一个简简单的第第一级权权限,你你必须由由其他权权限,这这看你想想对数据据库实施施什么操操作。 l CREAATE允许你创创建数据据库和表表,但不不允许创创建索引引。 l DROPP允许你删删除(抛抛弃)数数据库和和表,但但不允许许删除索索引。 注意:如如果你将将my
14、ssql数数据库的的droop权限限授予一一个用户户,该用用户能抛抛弃存储储了MyySQLL存取权权限的数数据库! l INDEEX允许你创创建并删删除索引引。 l REFEERENNCESS目前不用用。7.1.2.22管理权权限下列权限限运用于于控制服服务器或或用户授授权能力力的操作作的管理理性操作作。l FILEE允许你告告诉服务务器读或或写服务务器主机机上的文文件。该该权限不不应该随随便授予予,它很很危险,见见“回避授授权表风风险”。服务务器确实实较谨慎慎地保持持在一定定范围内内使用该该权限。你只能能读任何何人都能能读的文文件。你你正在写写的文件件必须不不是现存存的文件件,这防防止你迫迫
15、使服务务器重写写重要文文件,如如/ettc/ppassswd或或属于别别人的数数据库的的数据目目录。如果你授授权FIILE权权限,确确保你不不以UNNIX的的rooot用户户运行服服务器,因因为rooot可可在文件件系统的的任何地地方创建建新文件件。如果果你以一一个非特特权用户户运行服服务器,服服务器只只能在给给用户能能访问的的目录中中创建文文件。l GRANNT允许你将将你自己己的权限限授予别别人,包包括GRRANTT。 l PROCCESSS允许你通通过使用用SHOOW PPROCCESSS语句或或myssqlaadmiin pproccesss命令查查看服务务器内正正在运行行的线程程(进
16、程程)的信信息。这这个权限限也允许许你用KKILLL语句或或myssqlaadmiin kkilll命令杀杀死线程程。你总是能能看到或或杀死你你自己的的线程。PROOCESSS权限限赋予你你对任何何线程做做这些事事情的能能力。l RELOOAD允许你执执行大量量的服务务器管理理操作。你可以以发出FFLUSSH语句句,你也也能指性性myssqlaadmiin的rrelooad、reffressh、fflussh-hhostts、fflussh-llogss、fllushh-prriviilegges和和fluush-tabbless等命令令。 l SHUTTDOWWN允许你用用myssqlaad
17、miin sshuttdowwn关闭闭服务器器。 在useer、ddb和hhostt表中,每每一个权权限以一一个单独独的列指指定。这这些列全全部声明明为一个个ENUUM(N,Y)类型型,所以以每个权权的缺省省值是“N”。在ttablles_priiv和ccoluumnss_prriv中中的权限限以一个个SETT表示,它它允许权权限用一一个单个个列以任任何组合合指定。这两个个表比其其他三个个表更新新,这就就是为什什么它们们使用更更有效的的表示方方式的原原因。(有有可能在在未来,uuserr、dbb和hoost表表也用一一个SEET类型型表示。)7.1.3授权权表列的的内容7.1.3.11作用域域
18、列内容容一些范围围列要求求文字值值,但它它们大多多数允许许通配符符或其他他特殊值值。表7-33 作作用域列列的类型型字段名类型HosttCHARR(600)UserrCHARR(166)PasssworrdCHARR(166)DbCHARR(644) (ttablles_priiv和ccoluumnss_prriv表表为CHHAR(60)l Hostt 一个Hoost列列值可以以是一个个主机名名或一个个IP地地址。值值loccalhhostt意味着着本地主主机,但但它只在在你用一一个loocallhosst主机机名时才才匹配,而而不是你你在使用用主机名名时。假假如你的的本地主主机名是是pitt
19、.snnakee.neet并且且在usser表表中有对对你的两两条记录录,一个个有一个个Hosst值或或loccalhhostt,而另另一个有有pitt.snnakee.neet,有有loccalhhostt的记录录将只当当你连接接loccalhhostt时匹配配,其他他在只在在连接t时才匹匹配。如如果你想想让客户户能以两两种方式式连接,你你需要在在useer表中中有两条条记录。你也可以以用通配配符指定定Hosst值。可以使使用SQQL的模模式字符符“%”和“_”并具有有当你在在一个查查询中使使用LIIKE算算符同样样的含义义(不允允许reegexx算符)。 SQQL模式式字符都都能用于于主机
20、名名和IPP地址。如%wwiscc.eddu匹配配任何wwiscc.eddu域内内的主机机,而%.eddu匹配配任何教教育学院院的主机机。类似似地,1192.1688.%匹匹配任何何在1992.1168 B类子子网的主主机,而而1922.1668.33.%匹匹配任何何在1992.1168.3 CC类子网网的主机机。%值匹配配所有主主机,并并可用于于允许一一个用户户从任何何地方连连接。一一个空白白的Hoost值值等同于于%。(例例外:在在db表表中,一一个空白白Hosst值含含义是“进一步步检查hhostt表”,该过过程在“查询访访问验证证”中介绍绍。)从MySSQL 3.223起,你你也可以以
21、指定带带一个表表明那些些为用于于网络地地址的网网络掩码码的IPP地址,如如1922.1668.1128.0/117指定定一个117位网网络地址址并匹配配其IPP地址是是1922.1668.1128前前17位位的任何何主机。l Userr 用户名必必须是文文字的或或空白。一个空空白值匹匹配任何何用户。%作为为一个UUserr值不意意味着空空白,相相反它匹匹配一个个字面上上的%名名字,这这可能不不是你想想要的。当一个到到来的连连接通过过useer表被被验证而而匹配的的记录包包含一个个空白的的Useer值,客客户被认认为是一一个匿名名用户。 l Passsworrd 口令值可可以是空空或非空空,不允
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 培训 教程 10 第七
限制150内