MySQL数据库任务驱动式教程(第3版)项目七.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《MySQL数据库任务驱动式教程(第3版)项目七.pptx》由会员分享,可在线阅读,更多相关《MySQL数据库任务驱动式教程(第3版)项目七.pptx(98页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 项目七数据库安全与性能优化项目七数据库安全与性能优化MySQL数据库任务驱动式教程(第3版)(微课版)人民邮电出版社北京2 项目七数据库安全与性能优化任务 17 用户与权限【任务背景】MySQL用户包括root用户和普通用户。这两种用户的权限是不一样的。root用户是管理员,拥有所有的权限,包括创建用户、删除用户和修改普通用户的密码等管理权限;普通用户只拥有创建该用户时赋予它的权限。某校的教学管理系统,对用户权限的要求如下:教务处管理员有对课程、学生表和成绩表的所有权限(INSERT、UPDATE、DELETE等);任课教师可以录入成绩,但不能修改学生表、课程表数据;学生只能查看(SELE
2、CT)相关表数据,而不能更新、删除。那么,该怎样建立这些用户并设置相应的权限呢?数据库的安全性是指,只允许合法用户进行其权限范围内的数据库相关操作,保护数据库以防止任何不合法的使用所造成的数据泄露、更改或破坏。数据库安全性措施主要涉及以下两个方面的问题。(1)用户认证问题。(2)访问权限问题。3 项目七数据库安全与性能优化【任务背景】MySQL8.0新加了很多功能。其中在用户管理中增加了角色的管理;默认的密码加密方式也做了调整,由之前的SHA1改为了SHA2;同时,增加了MySQL5.7的禁用用户和用户过期的功能设置,提高了数据库的安全性。【任务要求】本任务将学习用CREATEUSER语句来创
3、建用户,用ALTER语句设置用户密码,用GRANT语句授予权限,以及使用REVOKE语句收回权限,通过修改MySQL授权表来创建用户、设置密码和授予权限,学习掌握权限转移、权限限制以及密码管理策略、角色管理等方面的知识和技能。任务 17 用户与权限续4 项目七数据库安全与性能优化创建用户账户用CREATEUSER分别创建能在本地主机、任意主机连接数据库的用户,并设置密码。语法格式如下。用CREATE USER创建用户CREATEUSERuserIDENTIFIEDBYPASSWORDpassword,userIDENTIFIEDBYPASSWORDpassword.【任务17.1】创建用户KI
4、NG,从本地主机连接MySQL服务器。mysqlCREATEUSERKINGlocalhost;【任务17.2】创建两个用户,用户名为palo,分别从任意主机和本地主机连接MySQL服务器,指定用户密码为“123456”。mysqlCREATEUSERpalo%IDENTIFIEDBY123456,palolocalhostIDENTIFIEDBY123456;创建的用户信息将保存在USER表中。如下命令可以查看创建的用户情况。MySQLSELECTUSER,HOST,AUTHENTICATION_STRINGFROMUSER;运行结果如图17.1所示。5 项目七数据库安全与性能优化图17.1
5、【任务17.2】运行结果创建用户账户6 项目七数据库安全与性能优化创建用户账户n只有root用户才可以设置或修改当前用户或其他特定用户的密码。修改用户密码【任务17.3】查看MySQL8.0中用户表默认的身份验证插件。mysqlselectuser,host,pluginfrommysql.user;运行结果如图所示。图17.2【任务17.3】运行结果【任务17.4】修改king的密码为queen。mysqlALTERUSERkinglocalhostIDENTIFIEDWITHmysql_native_passwordBYqueen;mysqlflushprivileges;【任务17.5】
6、修改密码时效为永不过期。mysqlALTERUSERroot%IDENTIFIEDBY123456PASSWORDEXPIRENEVER;7 项目七数据库安全与性能优化创建用户账户n重命名用户名的语法格式如下。nRENAMEUSERold_userTOnew_user,old_userTOnew_user.n其中,old_user为已经存在的SQL用户,new_user为新的SQL用户。重命名用户名【任务17.6】修改king用户名为ken。mysqlRENAMEUSERkinglocalhosttokenlocalhost;8 项目七数据库安全与性能优化授予用户权限n新的SQL用户不允许访问
7、属于其他SQL用户的表,也不能立即创建自己的表,它必须被授权。n在DOS终端运行如下命令,用刚才创建的king用户登录MySQL服务器。cdC:ProgramFilesMySQLMySQLServer8.0binMySQLukingp123456尝试使用USEXSCJ语句进入XSCJ数据库,将出现图17.3所示的错误。因为king用户尚未被授权,所以不能进入XSCJ数据库。图17.3用户未授权错误提示9 项目七数据库安全与性能优化授予用户权限nMySQL的权限可以分为多个层级。关于MySQL的权限数据库层级全局层级列层级表层级便用ON*.*语法赋予权限。便用ONdb_name.*语法赋予权限。
8、使用ONdb_name.tbl_name语法赋予权限。语法格式采用SELECT(col1,col2)、INSERT(col1,col2)和UPDATE(col1,col2)。10 项目七数据库安全与性能优化授予用户权限n新创建的用户还没有任何权限,不能访问数据库,不能做任何事情。针对不同用户对数据库的实际操作要求,分别授予用户对特定表的特定字段、特定表、数据库的特定权限。n语法格式如下。用GRANT授权GRANTpriv_type(column_list),priv_type(column_list).ONobject_typetbl_name|*|.|db_name.*TOuserIDENT
9、IFIEDBYPASSWORDpassword,userIDENTIFIEDBYPASSWORDpassword.WITHwith_optionwith_option.11 项目七数据库安全与性能优化授予用户权限授予对字段或表的权限字段或表的权限与说明见表17.1。01OPTION权限说明SELECT给予用户使用SELECT语句访问特定表的权限INSERT给予用户使用INSERT语句向一个特定表中添加行的权限DELETE给予用户使用DELETE语句从一个特定表中删除行的权限UPDATE给予用户使用UPDATE语句修改特定表中值的权限REFERENCES给予用户创建一个外键来参照特定表的权限CR
10、EATE给予用户使用特定的名字创建一个表的权限ALTER给予用户使用ALTERTABLE语句修改表的权限INDEX给予用户在表上定义索引的权限DROP给予用户删除表的权限ALL或ALLPRIVILEGES给予用户对表所有的权限12 项目七数据库安全与性能优化授予用户权限【任务17.7】授予用户king对students表的S_NO列和S_NAME列的UPDATE权限。mysqlGRANTUPDATE(S_NO,S_NAME)ONstudentsTOkinglocalhost;【任务17.8】授予用户peter、king查看、更新JXGL库STUDENTS表的权限。mysqlGRANTSELEC
11、T,UPDATEONJXGL.studentsTOpeterlocalhost,kinglocalhost;【任务17.9】授予用户peter在students表上定义索引的权限。mysqlGRANTINDEXONJXGL.STUDENTSTOpeterlocalhost;13 项目七数据库安全与性能优化授予用户权限授予对库的权限数据库的权限与说明见表17.2。01OPTION权限说明SELECT给予用户使用SELECT语句访问所有表的权限INSERT给予用户使用INSERT语句向所有表中添加行的权限DELETE给予用户使用DELETE语句从所有表中删除行的权限UPDATE给予用户使用UPDA
12、TE语句修改所有表中值的权限REFERENCES给予用户创建一个外键来参照所有的表的权限CREATE给予用户使用特定的名字创建一个表的权限ALTER给予用户使用ALTERTABLE语句修改表的权限INDEX给予用户在所有表上定义索引的权限DROP给予用户删除所有表和视图的权限CREATETEMPORARYTABLES给予用户在特定数据库中创建临时表的权限CREATEVIEW给予用户在特定数据库中创建新的视图的权限SHOWVIEW给予用户查看特定数据库中已有视图的视图定义的权限CREATEROUTINE给予用户为特定的数据库创建存储过程和存储函数等权限ALTERROUTINE给予用户更新和删除数
13、据库中已有的存储过程和存储函数等权限EXECUTEROUTINE给予用户调用特定数据库的存储过程和存储函数的权限LOCKTABLES给予用户锁定特定数据库的已有表的权限ALL或ALLPRIVILEGES表示所有权限14 项目七数据库安全与性能优化授予用户权限【任务17.10】授予用户king对JXGL数据库中所有表SELECT、INSERT、UPDATE、DELETE、CREATE、DROP的权限。mysqlGRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROPONJXGL.*TOkinglocalhost;【任务17.11】授予用户david对JXGL数据库
14、中所有表所有的权限。mysqlGRANTALLONJXGL.*TOdavidlocalhost;【任务17.12】授予用户stone为JXGL数据库创建存储过程和存储函数权限。mysqlGRANTCREATEROUTINEONJXGL.*TOstonelocalhost;授予对所有库的权限【任务17.13】授予用户stone操作所有数据库的权限。03OPTIONmysqlGRANTCREATEUSERON*.*TOstonelocalhost;15 项目七数据库安全与性能优化用REVOKE收回权限n根据实际情况需要,可以使用REVOKE语句收回用户的部分或所有权限。n语法格式如下(第一种)。R
15、EVOKEpriv_type(column_list),priv_type(column_list).ONtbl_name|*|.|db_name.*FROMuser,user.n语法格式如下(第二种)。REVOKEALLPRIVILEGES,GRANTOPTIONFROMuser,user.n其中,第一种格式用来收回某些特定的权限,第二种格式用来收回某用户的所有权限。【任务17.14】收回用户king在JXGL库的SELECT权限。mysqlREVOKEselectonJXGL.*FROMkinglocalhost;【任务17.15】收回用户king在JXGL库的所有权限。mysqlREVO
16、KEallonJXGL.*FROMkinglocalhost;16 项目七数据库安全与性能优化权限限制WITH子句也可以对一个用户的权限进行限制,语句如下。MAX_QUERIES_PER_HOURcount表示每小时可以查询数据库的最大次数。MAX_CONNECTIONS_PER_HOURcount表示每小时可以连接数据库的最大次数。MAX_UPDATES_PER_HOURcount表示每小时可以修改数据库的最大次数。其中,count表示次数。【任务17.17】授予用户Jim每小时只能处理一条SELECT语句的权限。mysqlGRANTSELECTONXSTOJimlocalhostWITHM
17、AX_QUERIES_PER_HOUR1;【任务17.18】授予用户king每小时可以发出查询20次、每小时可以发出更新10次、每小时可以连接数据库5次的权限。mysqlGRANTALLON*.*TOkinglocalhostIDENTIFIEDBYfrankWITHMAX_QUERIES_PER_HOUR20MAX_UPDATES_PER_HOUR10MAX_CONNECTIONS_PER_HOUR5;17 项目七数据库安全与性能优化密码管理策略要全局建立自动密码到期策略,请使用default_password_lifetime系统变量。其默认值为0,表示禁用自动密码到期。如果default
18、_password_lifetime的值为正整数N,则表示允许的密码生存期为N天,以便密码必须每N天更改。该变量可以加在配置文件中。过期时间管理(1)要建立全局策略,密码的使用期限大约为6个月,可在服务器f文件中使用以下命令启动服务器。mysqlddefault_password_lifetime=180(2)要建立全局策略,以便密码永不过期,请将default_password_lifetime设置为0。mysqlddefault_password_lifetime=0这个参数是可以动态设置并保存的,示例代码如下。SETPERSISTdefault_password_lifetime=180
19、;SETPERSISTdefault_password_lifetime=0;18 项目七数据库安全与性能优化密码管理策略(3)创建和修改带有密码过期的用户,账户特定的到期时间设置示例如下。要求每60天更换密码的代码如下。CREATEUSERjacklocalhostPASSWORDEXPIREINTERVAL60DAY;ALTERUSERjacklocalhostPASSWORDEXPIREINTERVAL60DAY;禁用密码到期的代码如下。CREATEUSERjacklocalhostPASSWORDEXPIRENEVER;ALTERUSERjacklocalhostPASSWORDEXP
20、IRENEVER;遵循全局到期策略的代码如下。CREATEUSERwangweilocalhostPASSWORDEXPIREDEFAULT;ALTERUSERwangweilocalhostPASSWORDEXPIREDEFAULT;19 项目七数据库安全与性能优化密码管理策略MySQL允许限制重复使用以前的密码,可以根据密码更改次数、已用时间或两者来建立重用限制。账户的密码历史由过去分配的密码组成。MySQL可以限制从此历史记录中选择新密码。MySQL用户密码重用策略设置(1)如果根据密码更改次数限制账户,则无法从指定数量的最新密码中选择新密码。例如,如果密码更改的最小数量设置为3,则新密
21、码不能与任何最近的3个密码相同。(2)如果账户因时间的限制而被限制,则无法从历史记录中的新密码中选择新密码,该新密码时间限制不会超过指定的天数。例如,如果密码重用间隔设置为60天,则新密码不得与最近60天内选择的密码相同。注意:空密码不记录在密码历史记录中,并随时可以重复使用。20 项目七数据库安全与性能优化角色管理MySQL提供的角色管理功能总结如下。CREATEROLE与DROPROLE为角色创建和删除。GRANT与REVOKE为用户的角色分配和撤销权限。SHOWGRANTS表示显示用户的角色权限和角色分配。SETDEFAULTROLE表示指定哪些账户角色默认处于活动状态。SETROLE表
22、示更改当前会话中的活动角色。CURRENT_ROLE()表示显示当前会话中的活动角色。21 项目七数据库安全与性能优化角色管理【任务17.19】应用程序使用名为app_db的数据库,假设需要1个开发人员账户、2个需要只读访问权限的用户,以及1个需要读取/写入权限的用户,应使用角色功能分配权限。创建角色并授予用户角色权限CREATEUSERdev1localhostIDENTIFIEDBY123456;CREATEUSERread_user1localhostIDENTIFIEDBY123456;CREATEUSERread_user2localhostIDENTIFIEDBY123456;CR
23、EATEUSERrw_user1localhostIDENTIFIEDBY123456;n首先,使用CREATEUSER创建用户。CREATEROLEapp_developer,app_read,app_write;GRANTALLONapp_db.*TOapp_developer;GRANTSELECTONapp_db.*TOapp_read;GRANTINSERT,UPDATE,DELETEapp_db.*TOapp_write;n然后,使用CREATEROLE创建角色并用GRANT分配权限给角色。GRANTapp_developerTOdev1localhost;GRANTapp_rea
24、dTOread_user1localhost,read_user2localhost;GRANTapp_read,app_writeTOrw_user1localhost;n最后,为每个用户分配其所需的权限,使用GRANT语句列举每个用户的个人权限。22 项目七数据库安全与性能优化角色管理要验证分配给用户的权限,可使用SHOWGRANTS,如下所示。检查角色权限mysqlSHOWGRANTSFORdev1localhost;mysqlSHOWGRANTSFORdev1localhostUSINGapp_developer;n但是,它会显示每个授予的角色,而不会将其显示为角色所代表的权限。如果要
25、显示角色权限,需要添加一个USING。mysqlSHOWGRANTSFORread_user1localhostUSINGapp_read;n同样验证其他类型的用户。23 项目七数据库安全与性能优化角色管理正如可以授权某个用户角色一样,也可以从账户中撤销这些角色。撤销角色或角色权限REVOKEroleFROMuser;REVOKEINSERT,UPDATE,DELETEONapp_db.*FROMapp_write;nREVOKE可以修改角色权限。这不仅影响角色本身权限,还影响任何被授予该角色的用户权限。假设想临时让所有用户只读,可使用REVOKE从该app_write角色中撤销修改权限。my
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 数据库 任务 驱动 教程 项目
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内