资源描述
,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,Click to edit Master title style,*,北京万博天地网络技术股份有限公司 版权所有,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,Click to edit Master title style,第十八章,MySQL,权限管理,本章目标,了解,MySQL,权限的主要作用,熟悉,MySQL,提供的权限及权限的工作原理,掌握,MySQL,初始权限的管理,熟悉,GRANT,和,REVOKE,语句的用法,掌握添加和删除用户,掌握授予和撤消用户权限,本章内容,18.5,管理,MySQL,权限,18.4,GRANT,和,REVOKE,语句,18.3,管理,MySQL,的初始权限,18.2,MySQL,权限的工作原理,18.1,MySQL,权限管理概述,18.1.1,权限系统的主要作用,MySQL,中提供了一套非常实用的权限系统,通过该权限系统,可以管理和控制某个用户使用其所提供的主机名、用户名和密码能否连接到指定的数据库服务器,还能控制连接到数据库服务器的用户能否打开所需数据库以及能否对数据进行读取(,select,)、添加(,insert,)、修改(,update,)和删除(,delete,)等操作,18.1.2,MySQL,提供的权限,MySQL,提供的权限以字段形式存储于系统数据库,mysql,的各个授权表中,18.2,MySQL,权限的工作原理,系统数据库,mysql,第一阶段,连接验证阶段,第二阶段,请求验证阶段,18.2.1,系统数据库,mysql,MySQL,内置了一个系统数据库,mysql,,其中包含存放着权限系统所需要的数据的授权表,当,MySQL,服务启动时,会首先读取系统数据库,mysql,中的授权表,并将表中相关的数据装入内存,当用户连接,MySQL,服务器并对数据库进行存取操作时,,MySQL,在连接验证阶段和请求验证阶段会根据这些表中的数据做相应的权限控制,18.2.1,系统数据库,mysql,(续),系统数据库,mysql,中的授权表,mysql,数据库中用于权限系统的授权表主要包括,user,表中的字段,db,表中的字段,host,表中的字段,tables_priv,表中的字段,columns_priv,表中的字段,授权表字段的分类,18.2.2,第一阶段,连接验证阶段,在连接验证阶段,,MySQL,权限系统将检查用户的是否被允许连接到,MySQL,服务器,当用户试图连接到一个,MySQL,服务器时,,MySQL,权限系统将基于用户的身份和其提供的口令来判断接受或拒绝连接,如果用户未能通过验证,则到服务器的连接和对数据库的存取将被完全拒绝,否则,服务器将接受连接,然后进入第二阶段,请求验证阶段,用户的身份根据两个信息来确定,即从哪个主机连接和使用哪个,MySQL,用户,连接验证需要使用系统数据库,mysql,中,user,表的,Host,、,User,和,Password,三个范围字段,18.2.2,第一阶段,连接验证阶段(续),user,表范围字段的值可以参考如下规则指定,Host,字段的值可以是主机名或,IP,地址,或“,localhost”,指出本地主机,可以在,Host,字段中使用通配符“,%”,和“,_”,Host,字段值为通配符“,%”,用于匹配任何主机名,,Host,字段的值为空等价于“,%”,User,字段的值不能使用通配符,但是可以指定为空值,用于匹配任何名字,Password,字段可以为空值空白的,这意味着用户必须不指定一个口令进行连接,非空的,Password,值代表加密的口令,18.2.2,第一阶段,连接验证阶段(续),user,表排序,一个到来的连接可以被,user,表中的几个条目同时匹配,MySQL,在启动时读入,user,表后对条目进行排序,当一个用户试图连接时,以排序的顺序检查条目,第一个匹配的条目将被使用,18.2.3,第二阶段,请求验证阶段,一旦用户通过了连接验证,与服务器建立了连接,验证过程将进入第二阶段,请求验证阶段,在请求验证阶段,,MySQL,权限系统将会检查用户所发出的每一个对于数据库的操作请求,以确定用户是否具有足够的权限来执行这一操作,18.2.3,第二阶段,请求验证阶段(续),MySQL,权限系统在进行请求验证时,可能会用到来自系统数据库,mysql,中,user,、,db,、,host,、,tables_priv,或,columns_priv,表的范围字段和权限字段,遵循的规则,user,表的范围字段用于决定接受或拒绝连接,对于接受的连接,相应的权限字段将定义用户的全局权限(超级用户权限),db,和,host,表用于授予用户对特定数据库的操作权限,tables_priv,和,columns_priv,表的作用类似于,db,表,除了可以针对数据库进行授权之外,还可以针对表和列进行授权,因此更加细致灵活,管理权限(如,reload,、,shutdown,等)仅在,user,表中被指定,file,权限也仅在,user,表中指定,18.3,管理,MySQL,的初始权限,MySQL,的初始权限,管理初始权限以增强,MySQL,安全,18.3.1,MySQL,的初始权限,MySQL,安装完成之后,在启动,MySQL,服务(,mysqld,)时,会加载授权表中的初始权限设置,初始权限存储在,user,和,db,表中,可以使用,SELECT,语句进行查看,主要包括,内置一个口令为空的,root,用户,该用户是可以对,MySQL,数据库系统进行任何操作的超级用户,内置一个匿名用户,该用户可对有一个名为“,test”,或名称以“,test_”,开始的数据库进行任何操作,其他权限均被拒绝,18.3.2,管理初始权限以增强,MySQL,安全,设置,MySQL,超级用户,root,的口令,mysqladmin-u root-p,旧密码,password,新口令,使用,UPDATE,语句和,PASSWORD(),函数将,root,口令设置为空,UPDATE user SET password=PASSWORD()WHERE user=root;,18.3.2,管理初始权限以增强,MySQL,安全(续),删除匿名用户,由于允许匿名用户连接存在一定的安全隐患,因此,如果没有特别的需要,应将匿名用户删除,DELETE FROM user WHERE user=,18.4,GRANT,和,REVOKE,语句,GRANT,语句用于授予用户权限,GRANT priv_type(column_list),priv_type(column_list).,ON*.*|*|db_name.*|db_name.tbl_name|db_name,TO user_name IDENTIFIED BY password,user_name IDENTIFIED BY password.,WITH GRANT OPTION,18.4,GRANT,和,REVOKE,语句(续),REVOKE,语句用于撤消用户权限,REVOKE,priv_type(column_list),priv_type(column_list).,ON*.*|*|db_name.*|db_name.tbl_name|db_name,FROM user_name,user_name.,18.5,管理,MySQL,权限,添加新的用户权限,授予用户权限,撤消用户权限,删除用户,18.5.1,添加新的用户权限,可以使用两种方法来添加新的用户权限,使用,GRANT,语句添加新的用户权限,直接操作,MySQL,授权表来添加新的用户权限,18.5.2,授予用户权限,在实际应用中,通常需要授予某个用户特定的权限,使其能够对指定的数据库具体相应的操作权限,GRANT select,insert ON db_address_book.master_name TO,testlocalhost IDENTIFIED BY testpass;,18.5.3,撤消用户权限,如果想撤消用户权限,需要使用,REVOKE,语句,REVOKE insert ON db_address_book.master_name FROM,testlocalhost;,18.5.4,删除用户,如果某用户已经不再使用,则可以删除该用户,DELETE FROM user WHERE user=test;,本章总结,MySQL,权限管理概述,MySQL,权限的工作原理,管理,MySQL,的初始权限,GRANT,和,REVOKE,语句,管理,MySQL,权限,
展开阅读全文