《第7章管理MySQL用户与权限教学课件PPT.pptx》由会员分享,可在线阅读,更多相关《第7章管理MySQL用户与权限教学课件PPT.pptx(57页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第7章 管理MySQL用户与权限MySQL网络数据库设计与开发(第3版)2022-7-112第七章 管理MySQL用户与权限MySQL网络数据库设计与开发(第3版)2022-7-113目 录情景引入任务目标任务实施010203任务小结知识拓展0405MySQL网络数据库设计与开发(第3版)2022-7-114小李配合导师完成了学生成绩管理系统的数据库设计,建好了相关数据库及表,录入了部分测试数据。但随着软件开发的推进,小李发现,数据库中的表数据及其他数据库对象偶尔会被其他成员误操作或误删,使数据库中的数据部分或全部丢失。为了保证MySQL数据库的安全性,小李有必要进一步学习数据库用户管理及其操
2、作权限管理以保护相关数据信息。7.1情景引入MySQL网络数据库设计与开发MySQL网络数据库设计与开发(第3版)2022-7-1157.1情景引入包括:1用户的添加与删除管理。2用户密码的设置与修改。 3用户权限设置与回收管理。 用户管理包括管理用户的账户与权限。MySQL数据库将用户分为普通用户和root用户,这两种用户的权限是不一样的。root用户是超级管理员,拥有的权限包括:创建用户、删除用户、修改普通用户的密码等管理权限。而普通用户只拥有在创建用户时赋予它的权限。MySQL网络数据库设计与开发(第3版)2022-7-1161. 知识目标2. 能力目标3. 素质目标7.2任务目标MyS
3、QL网络数据库设计与开发MySQL网络数据库设计与开发(第3版)2022-7-117 知识目标1了解MySQL权限表的基本信息。2掌握用户登录和退出MySQL服务器的方法。3掌握创建和删除普通用户的方法。4掌握普通用户和root用户的密码管理。5掌握MySQL数据库权限管理知识。7.2任务目标MySQL网络数据库设计与开发(第3版)2022-7-118 能力目标1能正确使用MySQL数据库的系统表。2能使用mysql命令创建、删除、修改系统账户。3能以管理员身份对普通账户进行管理。4能对系统账户进行密码修改。5能对MySQL账户赋予指定的权限。6能从MySQL账户中收回已经赋予的权限。7能使用
4、GRANT和REVOKE语句灵活管理数据库权限。7.2任务目标MySQL网络数据库设计与开发(第3版)2022-7-119 素质目标1具备数据安全与规范的意识。2具备规范操作数据的技术及职业素养。3具备一定的团队协作意识。4具备较强的规则与秩序意识。5具备规范操作数据库的技术及职业素养。7.2任务目标MySQL网络数据库设计与开发(第3版)2022-7-1110任务7.3.1 MySQL数据库权限表任务7.3.2 管理MySQL账户任务7.3.3 管理MySQL权限7.3任务实施MySQL网络数据库设计与开发MySQL网络数据库设计与开发(第3版)2022-7-1111 在安装MySQL数据库
5、软件时会自动安装一个名为mysql的数据库。mysql数据库中存储的都是权限表。用户登录以后,mysql数据库系统会根据这些权限表的内容为每个用户赋予相应的权限。MySQL服务器通过MySQL权限表来控制用户对数据库的访问,MySQL权限表存放在mysql数据库里,由mysql_install_db脚本初始化。这些MySQL权限表分别为user、db、table_priv、columns_priv、proc_priv、host等。7.3.1 MySQL数据库权限表MySQL网络数据库设计与开发(第3版)2022-7-1112下面依次简单介绍一下这些表的结构和内容。 user权限表:记录允许连接
6、到服务器的用户账号信息,其中的权限是全局级的。 db权限表:记录各个账号在各个数据库上的操作权限。 table_priv权限表:记录数据表级的操作权限。 columns_priv权限表:记录数据列级的操作权限。 proc_priv权限表:存储过程和存储函数的操作权限。 host权限表:配合db权限表对给定主机上的数据库级操作权限实施更细致的控制。这个权限表不受GRANT和REVOKE语句的影响。7.3.1 MySQL数据库权限表MySQL网络数据库设计与开发(第3版)2022-7-11131user表表 user表是mysql数据库中最重要的一个权限表。用户可以使用DESC语句来查看user表
7、中的基本结构。user表中有39个字段,这些字段大致分为4列,分别是用户列、权限列、安全列和资源控制列。 1)用户列 user表中的用户列包括host字段、user字段、password字段,分别表示主机名、用户名和密码。用户登录首先要判断的就是这3个字段,只有这3个字段同时匹配,mysql数据库系统才允许其登录。而且,创建新用户也是设置这3个字段的值。修改用户密码实际就是修改user表的password字段的值。因此,这3个字段决定了用户能否登录。7.3.1 MySQL数据库权限表MySQL网络数据库设计与开发(第3版)2022-7-11142)权限列user表的权限列包括了select_p
8、riv、insert_priv等以priv为结尾的字段。这些字段决定了用户的权限,其中不仅包括查询权限、修改权限等普通权限,还包括关闭服务器的权限、超级权限和加载用户等高级管理权限。普通用户用于操作数据库,高级管理权限用于对数据库进行管理。这些字段的值只有Y和N。Y表示该权限可以用到所有的数据库上;N表示该权限不能用到所有的数据库上。从安全角度考虑,这些字段的默认值都是N。可以使用GRANT语句为用户赋予一些权限,也可以通过使用UPDATE语句更新user表的方式来设置权限。说明:在权限列中有很多权限字段需要特别注意。grant_priv字段表示是否拥有GRANT权限;shutdown_pri
9、v表示是否拥有停止MySQL服务的权限;super_priv字段表示是否拥有超级权限;execute_priv字段表示是否拥有EXECUTE权限,拥有EXECUTE权限可以执行存储过程和存储函数。7.3.1 MySQL数据库权限表MySQL网络数据库设计与开发(第3版)2022-7-11153)安全列user表的安全列只有4个字段,分别是ssl_priv、ssl_cipher、x509_issuer、x509_subject。其中,ssl用于加密,x509标准可以用来标识用户。通常标准的发行版不支持SSL,使用SHOW VARIABLES LIKEhave_openssl语句可以查看user表
10、是否具有SSL功能。如果have_openssl的取值为DISABLED,则没有支持SSL加密的功能。4)资源控制列user表的4个资源控制分别是max_questions、max_updates、max_connections、max_user_ connections。其中,max_questions和max_updates分别规定了每个小时可以允许执行多少次查询和更新;max_connections规定了每个小时可以建立多少链接;max_user_connections规定了单个用户可以同时具有的链接数。这些字段的默认值都为0,表示没有限制。7.3.1 MySQL数据库权限表MySQL网
11、络数据库设计与开发(第3版)2022-7-11162db表和host表 db表和host表是MySQL数据库中非常重要的权限表。db表中存储了某个用户对一个数据库的权限。db表比较常用,而host表很少会用到。这两个表的表结构差不多,可以使用DESC语句查看这两个表的基本结构。db表和host表的字段大致可以分为两类,分别为用户列和权限列。 1)用户列 db表的用户列有3个字段,分别是host、db、user。这3个字段分别表示主机名、数据库名和用户名。host表的用户列有两个字段,分别是host和db,这两个字段分别表示主机名和数据库名。 host表是db表的扩展。如果db表中找不到host
12、字段的值,就需要到host表中去寻找。但是host表很少用到,通常db表的设置已经满足要求了。7.3.1 MySQL数据库权限表MySQL网络数据库设计与开发(第3版)2022-7-11172)权限列 db表和host表的权限列几乎一样,只是db表中多了一个create_routine_priv字段和alter_routine_priv字段。这两个字段决定了用户是否具有创建和修改存储过程的权限。 user表中的权限是针对所有数据库。如果user表中的select_priv字段取值为Y,则该用户可以查询所有数据库中的表;如果为某个用户只设置了查询test表的权限,则user表的select_pr
13、iv字段的取值为N。然而这个SELECT权限会记录在db表中,并且db表中的select_priv字段的取值将会是Y。由此可知,用户先根据user表的内容获取权限,再根据db表的内容获取权限。7.3.1 MySQL数据库权限表MySQL网络数据库设计与开发(第3版)2022-7-11183tables_priv表和表和columns_priv表表 tables_priv表可以对单个表进行权限设置。columns_priv表可以对单个数据列进行权限设置。tables_priv表包含了8个字段,分别是host、db、user、table_name、table_priv、column_ priv、t
14、imestamp、grantor。其中,前4个字段分别表示主机名、数据库名、用户名和表名;table_priv表示进行操作的权限,这些权限包括SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、GRANT、REFERENCES、INDEX、ALTER;column_priv表示对表中的数据列进行操作的权限,这些权限包括SELECT、INSERT、UPDATE、REFERENCES;timestamp表示修改权限的时间;grantor表示权限是谁设置的。7.3.1 MySQL数据库权限表MySQL网络数据库设计与开发(第3版)2022-7-1119 columns_p
15、riv表包含了7个字段,分别是host、db、user、table_name、column_name、column_priv、timestamp。与tables_priv表不同的是,这里多出了column_name字段,它表示可以对哪些数据列进行操作。 注意:注意:MySQL数据库中的权限分配是按照数据库中的权限分配是按照user表、表、db表、表、tables_priv表表和和columns_priv表的顺序进行分配的。在数据库系统中,先判断表的顺序进行分配的。在数据库系统中,先判断user表中的表中的值是否为值是否为Y。若。若user表中的值是表中的值是Y,则不需要检查后面的表;若,则不需
16、要检查后面的表;若user表中的值表中的值为为N,则依次查看,则依次查看db表、表、tables_priv表和表和columns_priv表。表。7.3.1 MySQL数据库权限表MySQL网络数据库设计与开发(第3版)2022-7-11204procs_priv表表 procs_priv表可以对存储过程和存储函数进行权限设置。procs_priv表包含了8个字段,分别是host、db、user、routine_name、routine_type、proc_priv、timestamp、grantor。前3个字段分别表示主机名、数据库名、用户名。routine_name字段表示存储过程或函数的
17、名称。routine_type字段表示类型。该字段有两个取值,分别是FUNCTION和PROCEDURE。其中,FUNCTION表示这是一个存储函数;PROCEDURE表示这是一个存储过程。proc_priv字段表示拥有的权限。权限分为3类,分别是EXECUTE、ALTER ROUTINE、GRANT。timestamp字段用于存储更新的时间。grantor字段用于存储创建者的名称。7.3.1 MySQL数据库权限表MySQL网络数据库设计与开发(第3版)2022-7-1121 账户管理是MySQL用户管理最基本的内容。账户管理包括登录和退出MySQL服务器、创建用户、删除用户、密码管理和权限
18、管理等内容。通过管理MySQL账户,可以保证MySQL数据库的安全性。1登录和退出登录和退出MySQL服务器服务器 用户可以通过mysql命令来登录MySQL服务器。打开Windows环境下的虚拟DOS窗口,可以使用mysql命令登录MySQL服务器。语法形式如下: mysql -h hostname|hostIP -P prot -u username -p password databaseName -e SQL语句;7.3.2 管理MySQL账户MySQL网络数据库设计与开发(第3版)2022-7-1122语法剖析如下: -h选项后面接主机名,hostname为主机名(默认为localh
19、ost),hostIP为主机IP(默认为127.0.0.1)。 -p选项后面接MySQL服务的端口。通过该参数连接到指定的端口。MySQL服务的默认端口为3306,在不使用该参数时会自动连接到3306端口,port为连接的端口号。 -u选项后面接用户名,username为用户名(默认为root)。 -p选项会提示输入密码,password为用户登录数据库的密码。 databaseName参数指明登录哪一个数据库中,可以使用USE命令选择数据库。如果没有修改参数,则会直接登录到MySQL数据库中。 -e选项后面可以直接加SQL语句。在登录MySQL服务器后就可以执行这个SQL语句,然后退出MyS
20、QL服务器。7.3.2 管理MySQL账户MySQL网络数据库设计与开发(第3版)2022-7-11237.3.2 管理MySQL账户2添加用户添加用户 在MySQL数据库中,可以使用CREATE USER语句创建一个或多个新的用户并设置相应的密码,也可以直接在mysql.user表中添加用户,还可以使用GRANT语句新建用户。 1)使用CREATE USER语句添加用户 在使用CREATE USER语句创建新用户时,必须拥有MySQL数据库的全局CREATE USER权限或INSERT权限。若账户已经存在,则会出现错误。CREATE USER语句基本语法形式如下: CREATE USER u
21、serIDENTIFIED BY PASSWORDpassword,userIDENTIFIED BY PASSWORD passwordMySQL网络数据库设计与开发(第3版)2022-7-1124 其中,user参数表示新建用户的账户,user由用户名(User)和主机名(Host)构成;IDENTIFIED BY关键字用来设置用户的密码;password参数表示用户的密码。如果密码是一个普通的字符串,就不需要使用PASSWORD关键字。CREATE USER语句可以同时创建多个用户。新用户可以没有初始密码。7.3.2 管理MySQL账户MySQL网络数据库设计与开发(第3版)2022-7
22、-1125 其中,PASSWORD()函数是用来给密码加密的。因为只设置了这3个字段的值,所以其他字段的取值均为其默认值。若除这3个字段以外的某个字段也没有默认值,则这个语句将不能执行。因此,需要将没有默认值的字段也设置值。在通常情况下,ssl_cipher、x509_subject和x509_issuer这3个字段是没有默认值的,因此必须为这3个字段设置初始值。INSERT语句的代码如下: INSERT INTO mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) values (hostname, usern
23、ame, PASSWORD(password),); 注意:注意:在在mysql.user表中,因为表中,因为ssl_cipher、x509_issuer、ssl_subject这这3个字段没有默认值,所个字段没有默认值,所以在向以在向user表中插入新记录时,一定要设置这表中插入新记录时,一定要设置这3个字段的值,否则个字段的值,否则INSERT语句将不能执行。而语句将不能执行。而且,且,Password字段一定要使用字段一定要使用PASSWORD()函数给密码加密。函数给密码加密。7.3.2 管理MySQL账户MySQL网络数据库设计与开发(第3版)2022-7-11263)使用GRANT
24、语句新建普通用户 在创建用户时,可以使用GRANT语句为用户授权,但必须拥有对GRANT的权限。GRANT语句的基本语法形式如下: GRANT priv_type ON database.table TO userIDENTIFIED BY PASSWROD password ,userIDENTIFIED BY PASSWRODpassword; 其中,priv_type参数表示新用户的权限;database.table参数表示新用户的权限范围,即只能在制定的数据库和表上使用自己的权限;user参数表示新用户的账户,由用户名和主机名构成;IDENTIFIED BY关键字用来设置密码;pass
25、word参数表示新用户的密码。GRANT语句可以同时创建多个用户。 说明:说明:GRANT语句不仅可以创建用户,还可以修改用户密码,甚至可以设置用户的权语句不仅可以创建用户,还可以修改用户密码,甚至可以设置用户的权限。因此,限。因此,GRANT语句是语句是MySQL数据库中非常重要的语句。数据库中非常重要的语句。7.3.2 管理MySQL账户MySQL网络数据库设计与开发(第3版)2022-7-11273删除用户删除用户 在MySQL数据库中,可以使用DROP USER语句删除普通用户,也可以直接在mysql.user表中删除用户。 1)使用DROP USER语句删除普通用户 在使用DROP
26、USER语句删除普通用户时,必须拥有DROP USER权限。DROP USER语句的基本语法形式如下: DROP USER user,user; 其中,user参数是需要删除的用户,由用户的用户名和主机名组成。DROP USER语句可以同时删除多个用户,各用户之间用逗号隔开。如果删除的用户已经创建了表、索引或其他的数据库对象,那么它们将继续保留,因为MySQL数据库中并没有记录是谁创建了这些对象。7.3.2 管理MySQL账户MySQL网络数据库设计与开发(第3版)2022-7-11282)使用DELETE语句删除普通用户 可以使用DELETE语句直接将用户的信息从mysql.user表中删除
27、。但必须拥有mysql.user表的DELETE权限。DELETE语句的基本语法形式如下: DELETE FROM mysql.user WHERE Host=hostname AND User=username; Host和User这两个字段都是mysql.user表的主键。因此,这两个字段的值才能唯一确定一条记录。7.3.2 管理MySQL账户MySQL网络数据库设计与开发(第3版)2022-7-11294.修改用户 使用RENAME USER语句可以修改一个已经存在的用户名字。语法格式如下: RANAME USER old_user TO new_user,old_user TO new
28、_user 其中,old_user为已经存在的用户名,new_user为需要修改的新的用户名。RENAME USER语句用于对原有MySQL账户进行重命名。使用RENAME USER语句必须要拥有全局CREATE USER权限和MySQL数据库UPDATE权限。若旧账户不存在或新账户已存在,则会出现错误。7.3.2 管理MySQL账户MySQL网络数据库设计与开发(第3版)2022-7-11307.3.2 管理MySQL账户5修改修改root用户密码用户密码 MySQL数据库是开源数据库,一般来说,MySQL数据库会搭配PHP来使用。但是,现在越来越多的ASP/ASPX及JSP程序员也都考虑选
29、择使用MySQL数据库开发程序。通常连接MySQL数据库都是通过root用户名和密码连接的,MySQL数据库在安装时root用户初始默认密码为空,在使用MySQL数据库做系统开发时,都需要填写连接MySQL数据库的用户名和密码,此时如果用户忘记了MySQL数据库的root密码或没有设置MySQL数据库的root密码,就必须要修改或设置MySQL数据库的root密码。在MySQL数据库中,由于root用户拥有最高的权限,因此必须保证root用户的密码安全。root用户可以通过多种方式修改密码。 MySQL网络数据库设计与开发(第3版)2022-7-11317.3.2 管理MySQL账户 1)使用
30、phpMyAdmin修改root密码 使用phpMyAdmin修改MySQL数据库的root密码非常方便,在安装配置好phpMyAdmin后,首先登录管理界面,单击右侧导航栏中的用户按钮,进入phpMyAdmin用户概况界面,如图7.1所示。选择root用户,单击编辑权限按钮,则进入phpMyAdmin修改密码界面,如图7.2所示,在“输入”和“重新输入”文本框中,输入要修改的MySQL数据库的root新密码,单击执行按钮即可。MySQL网络数据库设计与开发(第3版)2022-7-11327.3.2 管理MySQL账户 2)使用mysqladmin命令修改密码 root用户可以使用mysqla
31、dmin命令修改密码。mysqladmin命令的语法形式如下: mysqladmin -u username -p password new_password; 注意:注意:上面语法中的上面语法中的password为关键字,而不是指旧密码。而且新密码为关键字,而不是指旧密码。而且新密码new_ password必须用双引号括起来,使用单引号会出现错误,这一点要特别注意。如果使必须用双引号括起来,使用单引号会出现错误,这一点要特别注意。如果使用单引号,则可能会造成修改后的密码不是用户想要修改的密码。用单引号,则可能会造成修改后的密码不是用户想要修改的密码。MySQL网络数据库设计与开发(第3版)
32、2022-7-11337.3.2 管理MySQL账户 3)修改MySQL数据库下的user表 root用户在登录MySQL服务器后,可以使用UPDATE语句更新mysql.user表。在user表中修改password字段的值,就可以达到修改密码的目的了。UPDATE语句的代码如下: UPDATE mysql.user SET Password=PASSWORD (new_password) WHERE User=root AND Host=localhost; 新密码必须使用PASSWORD()函数来加密。在执行完UPDATE语句后,需要执行FLUSH PRIVILEGES语句来加载权限。M
33、ySQL网络数据库设计与开发(第3版)2022-7-11347.3.2 管理MySQL账户 4)使用SET语句修改root用户的密码 在使用root用户信息登录MySQL服务器后,可以使用SET语句修改密码。SET语句的代码如下: SET PASSWORD=PASSWORD(new_password); 新密码必须用PASSWORD()函数来加密。MySQL网络数据库设计与开发(第3版)2022-7-11356rootroot用户修改普通用户密码用户修改普通用户密码 root用户具有最高权限,不仅可以修改自己的密码,还可以修改普通用户的密码。root用户在登录MySQL服务器后,可以通过使用S
34、ET语句、修改user表和使用GRANT语句3种方式修改普通用户的密码。 1)使用SET语句修改普通用户密码 在使用root用户信息登录MySQL服务器后,可以使用SET语句修改普通用户的密码。SET语句的代码如下: SET PASSWORD FOR usernamehostname=PASSWORD(new_password); 其中,username参数是普通用户的用户名,hostname参数是普通用户的主机名,新密码必须使用PASSWORD()函数来加密。7.3.2 管理MySQL账户MySQL网络数据库设计与开发(第3版)2022-7-1136 2)修改MySQL数据库下的user表
35、在使用root用户信息登录MySQL服务器后,可以使用UPDATE语句修改mysql.user表。UPDATE语句的代码如下: UPDATE mysql.user SET PASSWORD=PASSWORD(new_password)WHERE User=username AND Host=hostname; 其中,username参数是普通用户的用户名,hostname参数是普通用户的主机名,新密码必须使用PASSWORD()函数来加密。在执行完UPDATE语句后,需要执行FLUSH PRIVILEGES语句来加载权限。7.3.2 管理MySQL账户MySQL网络数据库设计与开发(第3版)2
36、022-7-11373)使用GRANT语句修改普通用户的密码 root用户可以使用GRANT语句修改普通用户的密码,但必须拥有对GRANT权限。GRANT语句的基本语法形式如下: GRANT priv_type ON database.table TO userIDENTIFIED BY PASSWORDpassword; 其中,priv_type参数表示普通用户的权限;database.table参数表示用户的权限范围,即在指定的数据库和表上使用自己的权限;user参数表示用户的账户,由用户名和主机名构成;IDENTIFIED BY关键字用来设置密码;password参数表示用户的新密码。7
37、.3.2 管理MySQL账户MySQL网络数据库设计与开发(第3版)2022-7-11387rootroot用户密码丢失的解决办法用户密码丢失的解决办法 如果root用户密码丢失了,则会造成很大的麻烦。但是,root用户可以通过某种特殊方法登录MySQL服务器,然后在root用户下设置新的密码。解决root用户密码丢失的方法如下: 1)使用skip-grant-tables选项启动MySQL服务器 skip-grant-tables选项可以使MySQL服务器停止权限判断,任何用户都有访问数据库的权限。这个选项是连接在MySQL服务器的命令后面的。在Windows操作系统中,root用户可以使用
38、mysqld或mysqld-nt命令启动MySQL服务,也可以使用net start mysql命令启动MySQL服务。7.3.2 管理MySQL账户MySQL网络数据库设计与开发(第3版)2022-7-1139mysqld命令如下: mysqld -skip-grant-tables mysqld-nt命令如下: mysqld-nt -skip-grant-tables net start mysql命令如下: net start mysql -skip-grant-tables 在启动MySQL服务后,若可以看到窗口光标在下一行的第一个位置闪烁,则说明MySQL服务器已经启动,不需要管。新
39、建一个命令行窗口,启动MySQL数据库,root用户就可以登录了。7.3.2 管理MySQL账户MySQL网络数据库设计与开发(第3版)2022-7-1140mysqld命令如下: mysqld -skip-grant-tables mysqld-nt命令如下: mysqld-nt -skip-grant-tables net start mysql命令如下: net start mysql -skip-grant-tables 在启动MySQL服务后,若可以看到窗口光标在下一行的第一个位置闪烁,则说明MySQL服务器已经启动,不需要管。新建一个命令行窗口,启动MySQL数据库,root用户就
40、可以登录了。7.3.2 管理MySQL账户MySQL网络数据库设计与开发(第3版)2022-7-1141 2)登录用户,并设置新的密码 通过上述方式启动MySQL服务,root用户可以不输入密码就能登录MySQL服务器了。然后,可以使用UPDATE语句修改密码。 C:Usersxscmysql -u root;Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 2Server version: 5.5.24-log MySQL Community Server (GPL)Copyr
41、ight (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respective owners.Type help; or h for help. Type c to clear the current input statement.mysql UPDATE mysql.user S
42、ET PASSWORD=PASSWORD(root) WHERE User=root and Host =localhost;7.3.2 管理MySQL账户MySQL网络数据库设计与开发(第3版)2022-7-1142 上面的程序没有输入root用户的密码,而是直接使用用户名root登录MySQL数据库的。而且在使用UPDATE语句修改密码后,其结果显示user表已经更新。 注意:注意:这里必须使用这里必须使用UPDATE语句来更新在语句来更新在MySQL数据库下的数据库下的user表,而不能使表,而不能使用用SET语句。如果使用语句。如果使用SET语句,就会出现语句,就会出现ERROR 12
43、90(HY000):):The mysql server is running with skip-grant-tables option so it cannot execute this statement的错的错误提示。误提示。7.3.2 管理MySQL账户MySQL网络数据库设计与开发(第3版)2022-7-1143 3)加载权限表 在修改完密码之后,必须用FLUSH PRIVELEG语句加载权限表。在加载完权限表后,新密码开始生效,MySQL服务器也开始进行权限认证。用户必须输入用户名和密码才能登录MySQL数据库。加载权限表的代码执行结果如下: mysql flush privil
44、eges;Query OK, 0 rows affected (0.01 sec) 这样一来,root用户的密码就设置成功了。7.3.2 管理MySQL账户MySQL网络数据库设计与开发(第3版)2022-7-11447.3.3 管理MySQL权限 权限管理主要是对数据库的用户进行权限验证。所有用户的权限都存储在MySQL数据库的权限表中。数据库管理员要对权限进行管理,合理的权限管理能够保证数据库系统的安全,不合理的权限设置可能会给数据库系统带来意想不到的危害。1MySQL数据库中的各种权限数据库中的各种权限 MySQL数据库中有很多种类的权限,这些权限都存储在MySQL数据库下的权限表中。
45、通过权限设置,用户可以拥有不同的权限。拥有GRANT权限的用户可以为其他用户设置权限。拥有REVOKE权限的用户可以收回自己设置的权限。合理地设置权限能够保证MySQL数据库的安全。MySQL网络数据库设计与开发(第3版)2022-7-11457.3.3 管理MySQL权限2授权授权 授权就是为某个用户赋予某些权限。例如,可以为新建的用户赋予查询所有数据库和表的权限。合理的授权能够保证数据库的安全。不合理的授权可能会使数据库存在安全隐患。在MySQL数据库中,使用GRANT关键字来为用户设置权限。 新的SQL用户不允许访问属于其他SQL用户的表,也不能立即创建自己的表,因此他必须被授权。可以授
46、予的权限有以下几项。 列权限:与表中的一个具体列相关。例如,使用UPDATE语句更新XSCJ表的学号列的值的权限。 表权限:与一个具体表中的所有数据相关。例如,使用INSERT INTO语句为XSCJ表添加新的数据的权限。 数据库权限:与一个具体的数据库中的所有表相关。例如,在已有的XSC数据库中创建新表或删除表的权限。 用户权限:与所有的数据库相关。例如,删除已有的数据库或创建一个新的数据库的权限。MySQL网络数据库设计与开发(第3版)2022-7-11467.3.3 管理MySQL权限 在MySQL数据库中,必须拥有GRANT权限的用户才可以执行GRANT语句。GRANT语句的基本语法如
47、下: GRANT priv_type (column_list) ON database.table TO user IDENTIFIED BY PASSWORD password,user IDENITIFIED BY PASSWORD password WITH with_option with_ option; 其中,priv_type参数表示权限的类型,如SELECT、UPDATE等,给不同的对象授予权限priv_type的值也不相同;column_list参数表示权限作用于哪些列上,若没有该参数则作用于整个表上;ON关键字后面给出的是授予权限的数据库或表名;TO子句用来设定用户和密码
48、;user参数由用户名和主机名构成,如username hostname;IDENTIFIED BY参数用来为用户设置密码;password参数是用户的新密码;WITH关键字后面带一个或多个with_option参数。MySQL网络数据库设计与开发(第3版)2022-7-11477.3.3 管理MySQL权限这个参数有5个选项,详细介绍如下。 GRANT OPTION:被授权的用户可以将这些权限赋予别的用户。 MAX_QUERIES_PER_HOUR count:设置每小时可以允许执行count次查询。 MAX_UPDATES_PER_HOUE count:设置每小时可以允许执行count次更
49、新。 MAX_CONNECTIONS_PER_HOUR count:设置每小时可以建立count次连接。 MAX_USER_CONNECTIONS count:设置单个用户可以同时具有的count个连接数。MySQL网络数据库设计与开发(第3版)2022-7-11487.3.3 管理MySQL权限 1)授予表权限和列权限 在授予表权限时,ON关键字后面连接表名或视图名。priv_type参数可以是以下值。 SELECT:给予用户使用SELECT语句访问特定的表的权力。用户可以在一个视图公式中包含表。然而,用户必须对视图公式中指定的每个表(或视图)都有SELECT权限。 INSERT:给予用户使
50、用INSERT语句向一个特定表中添加行的权力。 DELETE:给予用户使用DELETE语句向一个特定表中删除行的权力。 UPDATE:给予用户使用UPDATE语句修改特定表中值的权力。 REFERENCDES:给予用户创建一个外键来参照特定的表的权力。 CREATE:给予用户使用特定的名字创建一个表的权力。 ALTER:给予用户使用ALTER TABLE语句修改表的权力。 INDEX:给予用户在表中定义索引的权力。 DROP:给予用户删除表的权力。 ALL或ALL PRIVILEGES:表示所有权限名。MySQL网络数据库设计与开发(第3版)2022-7-11497.3.3 管理MySQL权限