《MySQL数据库应用案例教程》651-5(马洁)教案 第22课 MySQL的权限与安全_第1页
《MySQL数据库应用案例教程》651-5(马洁)教案 第22课 MySQL的权限与安全_第2页
《MySQL数据库应用案例教程》651-5(马洁)教案 第22课 MySQL的权限与安全_第3页
《MySQL数据库应用案例教程》651-5(马洁)教案 第22课 MySQL的权限与安全_第4页
《MySQL数据库应用案例教程》651-5(马洁)教案 第22课 MySQL的权限与安全_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE14PAGE14PAGE13PAGE13

课题MySQL的权限与安全课时2课时(90min)教学目标知识技能目标:(1)认识权限表并掌握其用法(2)掌握账号管理的方法(3)掌握权限管理的方法素质目标:(1)培养探究意识(2)增强个人信息保护意识教学重难点教学重点:掌握权限表用法教学难点:掌握账号和权限的管理方法教学方法案例分析法、问答法、讨论法、讲授法、实践法教学用具电脑、投影仪、多媒体课件、教材教学设计第1节课:→→→传授新知(38min)第2节课:→传授新知(20min)→课堂实训(15min)→课堂小结(3min)→作业布置(2min)教学过程主要教学内容及步骤设计意图第一节课课前任务【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过文旌课堂APP或其他学习软件,预习本节课要学习的知识【学生】完成课前任务通过课前任务,使学生预习本节课要学习的知识,增加学生的学习兴趣考勤(2min)【教师】使用文旌课堂APP进行签到【学生】班干部报请假人员及原因培养学生的组织纪律性,掌握学生的出勤情况问题导入(5min)【教师】提出以下问题:MySQL的存取控制过程是怎样的?·通过问题导入,引导学生主动思考,激发学生的学习兴趣传授新知(38min)【教师】通过学生的回答引入要讲的知识,讲解MySQL权限表,以及账号管理的相关知识17.1MySQL权限表17.1.1MySQL权限系统的工作原理MySQL的存取控制过程是:首先服务器检查用户是否允许连接,假定用户能连接,服务器检查用户发出的每个请求,看其是否有足够的权限实施它。例如,如果用户从数据库中的一个表查找某行或从数据库中删除一个表,服务器会确定用户对表有SELECT权限或对数据库有DROP权限。服务器在存取控制过程中使用MySQL数据库中的权限表进行权限判断。MySQL5.7中存在4个控制权限的表,分别为user表,db表,tables_priv表和columns_priv表。这些表位于系统数据库mysql中。MySQL权限表的验证过程为:✈【教师】随机邀请学生回答以下问题:MySQL怎么区分不同的用户?✈【学生】聆听、思考、回答✈【教师】总结学生的回答(1)先通过user表中的host和user两个字段判断连接的IP和用户名是否存在,存在则通过验证。对于身份认证,MySQL是通过IP地址和用户名联合进行确认。例如,MySQL安装后默认创建的用户root@localhost表示用户root只能从本地(localhost)进行连接才可以通过认证,从其他任何主机对数据库进行的连接都将被拒绝。就是说,同一个用户,如果来自不同的IP地址,则MySQL将其视为不同的用户。✈【教师】随机邀请学生回答以下问题:身份认证之后权限分配的过程是怎样的?✈【学生】聆听、思考、回答✈【教师】总结学生的回答(2)通过身份认证后,进行权限分配,按照user,db,tables_priv,columns_priv的顺序进行验证。即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db,tables_priv和columns_priv;如果为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限;如果db中为N,则检查tables_priv中此数据库对应的具体表,取得表中为Y的权限,依此类推。【实例17-1】执行SQL语句,查看user表中的用户信息。打开命令窗口,登录MySQL并选择数据库mysql,执行SQL语句查看user表中的用户信息。SQL语句及其执行结果如下:mysql>USEmysql;Databasechangedmysql>SELECTuser,hostFROMuser\G***************************1.row***************************user:mysql.syshost:localhost***************************2.row***************************user:roothost:localhost2rowsinset(0.00sec)由查询结果可知,默认情况下user表中只有两个用户,其中一个是root。17.1.2权限表在权限存取的过程中,系统最常用到的是系统数据库mysql中的user表和db表,user表用于存放用户账号信息以及全局级别(所有数据库)权限。db表用于存放数据库级别的权限。user表和db表的定义如表17-1所示。✈【教师】通过多媒体展示“user表和db表的定义”表格,介绍相关知识表17-1user表和db表的定义表名userdb用户列host(主机名)hostuser(用户名)dbuser权限列select_priv(选择数据)select_privinsert_priv(插入数据)insert_privupdate_priv(更新数据)update_privdelete_priv(删除数据)delete_privcreate_priv(创建新的数据库和表)create_privdrop_priv(删除现有数据库和表)drop_privreload_priv(重新加载MySQL所用各种内部缓存)shutdown_priv(关闭MySQL服务器)process_priv(查看用户进程)file_priv(读写文件)grant_priv(将自身权限授予其他用户)grant_privreferences_priv(某些未来功能的占位符)references_privindex_priv(创建和删除表索引)index_privalter_priv(重命名和修改表结构)alter_privshow_db_priv(查看服务器上所有数据库名字)super_priv(执行某些强大的管理功能)create_tmp_table_priv(创建临时表)create_tmp_table_privlock_tables_priv(阻止对表的访问/修改)lock_tables_privexecute_priv(执行存储过程)execute_privrepl_slave_priv(读取用于维护复制数据库环境的日志文件)repl_client_priv(确定复制从服务器和主服务器的位置)create_view_priv(确定用户是否可以创建视图)create_view_privshow_view_priv(查看视图或了解视图如何执行)show_view_privcreate_routine_priv(更改或放弃存储过程和函数)create_routine_privalter_routine_priv(修改或删除存储函数及函数)alter_routine_privcreate_user_priv(是否可以执行CREATEUSER命令)event_priv(能否创建、修改和删除事件)event_privtrigger_priv(能否创建和删除触发器)trigger_privcreate_tablespace_priv(能否创建表空间)安全列ssl_typessl_cipherx509_issuerx509_subjectpluginauthentication_string(账号密码)资源

控制列max_questions(用户每小时允许执行的查询操作次数)max_updates(用户每小时允许执行的更新操作次数)max_connections(用户每小时允许执行的连接操作次数)max_user_connections(用户允许同时建立的连接次数)MySQL5.7新增列password_expired(密码自动失效)password_last_changed(密码最后一次修改时间)password_lifetime(密码自动失效时间)account_locked(用户账号锁定)【提示】如要查看user表中的字段,可以像查看普通表那样使用SELECT语句:SELECT*FROMmysql.userWHEREuser='root'ANDhost='localhost'\G;user表是MySQL中最重要的权限表,用于记录允许连接到服务器的账号信息。其中的权限是全局级的,如果用户在该表中被授予了DELETE权限,则该用户可以删除MySQL服务器上所有数据库中的任何记录。user表中的列可以分为4部分:用户列、权限列、安全列和资源控制列,通常使用最多的是用户列和权限列。1.用户列用户列包括host和user,表示主机名和用户名,并且这两个字段是表的联合主键。在用户与服务器建立连接时,输入的主机名和用户名必须匹配user表中对应的字段,只有2个值都匹配才允许建立连接。2.权限列权限列的字段决定了用户的权限,描述了在全局范围内允许对数据库进行的操作。包括查询和修改等用于数据库操作的普通权限,也包括关闭服务器和加载用户等管理权限。这些字段值的类型为ENUM,可取值为Y和N,Y表示用户有对应的权限;N表示用户没有对应的权限。权限列中所有字段的值默认都为N,如果要修改权限,可以使用GRANT语句或UPDATE语句修改user表中相应字段的值。3.安全列安全列有6个字段,其中两个是ssl相关的,两个是x509相关的。ssl用于加密,x509标准用于标注用户,plugin字段标识用于验证用户身份。如果该字段为空,服务器使用内建授权验证机制验证用户身份。authentication_string字段为5.7版本中新增的用于代替password,表示密码的字段。4.资源控制列资源控制列的字段用于限制用户使用的资源,包括以max开头的4个字段。如果1小时内用户查询或连接数量超过资源控制限制,该用户将被锁定,直到1小时后才可以再次执行相应操作。除上述4种类型的字段外,MySQL5.7还新增了4个字段,分别用于控制密码失效、最后一次修改时间、失效时间,及账号锁定。17.2账号管理✈【教师】组织学生扫码观看“账号管理”视频(详见教材),让学生对相关知识有一个大致了解MySQL提供许多命令用于管理用户账号,这些命令可用于管理包括登录和退出MySQL服务器、创建和删除用户、密码和权限管理等内容。MySQL数据库的安全性需要通过账号管理来保证。17.2.1创建账号在MySQL中,必须要有相应的权限来执行创建账号的操作。常用创建账号的方式有两种:一种是使用GRANT语句;另一种是使用CREATEUSER语句。一般推荐使用GRANT语句,因为操作简单,出错几率少。1.使用GRANT语句创建新用户使用GRANT语句不仅可以创建新用户,还可以在创建的同时对用户授权。另外,使用GRANT语句还可以指定账号的其他特点,如使用安全连接、限制使用服务器资源等。需要注意的是,使用GRANT语句创建新用户时必须有GRANT权限。GRANT语句的基本语法格式如下:GRANTpriv_type[,priv_type...]ONdb.tableTOuser@host[IDENTIFIEDBY'password'][,user[IDENTIFIEDBY'password']][WITHwith_option[with_option]...];其中,priv_type表示赋予用户的权限类型,比如SELECT,UPDATE等,allprivileges为所有权限;db.table表示用户的权限所作用的数据库或数据库中的表,*.*表示所有数据库;user表示用户名;host表示主机名,其中%匹配任何主机名;IDENTIFIEDBY关键字用于设置密码;password表示用户密码;[WITHwith_option[with_option]...]为可选参数,表示对新创建的用户赋予GRANT权限,即该用户可以对其他用户赋予权限。【提示】如果只指定用户名部分user,不指定主机名,则主机名部分默认为%,表示对所有主机开放权限;如果指定用户登录不需要密码,可以省略IDENTIFIEDBY部分。【实例17-2】使用GRANT语句创建一个新用户lucy,密码为lucy123,并授予用户对所有数据库的SELECT和UPDATE权限。GRANT语句及其执行结果如下:mysql>GRANTSELECT,UPDATEON*.*TO'lucy'@'localhost'IDENTIFIEDBY'lucy123';QueryOK,0rowsaffected,1warning(0.07sec)显示执行成功,使用SELECT语句查询用户lucy的权限:mysql>SELECThost,user,select_priv,update_privFROMmysql.userWHEREuser='lucy';+++++|host|user|select_priv|update_priv|+++++|localhost|lucy|Y|Y|+++++1rowinset(0.00sec)user表中的user和host字段区分大小写,在查询时要指定正确的用户名和主机名。2.使用CREATEUSER语句创建新用户要使用CREATEUSER语句创建用户,必须有全局的CREATEUSER权限,或MySQL数据库的INSERT权限。每添加一个用户,CREATEUSER语句会在mysql.user表中添加一条新记录。CREATEUSER语句的基本语法格式如下:CREATEUSERuser@host[IDENTIFIEDBY'password'];其中各参数的意义与GRANT语句中相同。使用CREATEUSER语句创建的用户没有任何权限,还需要使用GRANT语句赋予其权限。【实例17-3】使用CREATEUSER语句创建一个新用户lily,主机名为localhost,密码为lily123。CREATEUSER语句及其执行结果如下:mysql>CREATEUSERlily@localhostIDENTIFIEDBY'lily123';QueryOK,0rowsaffected(0.02sec)显示执行成功,使用SELECT语句查询用户lily的权限:mysql>SELECThost,user,select_priv,update_privFROMmysql.userWHEREuser='lily';+++++|host|user|select_priv|update_priv|+++++|localhost|lily|N|N|+++++1rowinset(0.00sec)可以看出,用户lily的查询和更新权限值均为N,表示该用户没有这些权限,17.3.3节将会详细介绍为用户授权的方法。17.2.2删除账号在MySQL中,可以使用DROPUSER语句删除用户。其基本语法格式如下:DROPUSER'user'@'host'[,'user'@'host'];DROPUSER语句可以一次删除一个或多个用户。要使用该语句,必须拥有MySQL数据库的全局CREATEUSER权限或DELETE权限。【实例17-4】使用DROPUSER语句删除用户名为lily,主机名为localhost的用户。DROPUSER语句及其执行结果如下:mysql>DROPuser'lily'@'localhost';QueryOK,0rowsaffected(0.03sec)可以看到语句执行成功,使用SELECT语句查看执行结果:mysql>SELECThost,userFROMmysql.user;+++|host|user|+++|localhost|lucy||localhost|mysql.sys||localhost|root|+++3rowsinset(0.00sec)可以看出,user表中已经没有用户名为lily,主机名为localhost的账号,该账号已被删除。17.2.3root用户修改自身密码✈【教师】组织学生扫码观看“修改密码”视频(详见教材),让学生对相关知识有一个大致了解由于root用户拥有很高的权限,其安全对于保证MySQL的安全非常重要。修改root用户密码的方式有多种,本节简单介绍几种比较常用的方法。1.修改MySQL数据库的user表由于所有账号信息都保存在user表中,因此可以通过修改user表中的密码字段值来改变root用户的密码。使用root用户登录MySQL服务器后,可以执行以下UPDATE语句修改其登录密码:UPDATEmysql.userSETauthentication_string=PASSWORD('newpwd')WHEREuser='root'ANDhost='localhost';PASSWORD()函数用于加密用户密码,newpwd指要为用户设置的新密码。执行该语句后,还要执行FLUSHPRIVILEGES;语句重新加载用户权限。【实例17-5】使用UPDATE语句将root用户的密码修改为root123。UPDATE语句及其执行结果如下:mysql>UPDATEmysql.userSETauthentication_string=PASSWORD('root123')WHEREuser='root'ANDhost='localhost';QueryOK,1rowaffected,1warning(0.06sec)Rowsmatched:1Changed:1Warnings:1执行FLUSHPRIVILEGES;语句,重新加载用户权限。mysql>FLUSHPRIVILEGES;QueryOK,0rowsaffected(0.11sec)执行完UPDATE语句后,root用户密码被成功修改。使用FLUSHPRIVILEGES;语句重新加载用户权限后,就可以使用新密码登录MySQL了。【提示】在之前的版本中,密码字段的字段名是password,5.7版本改为了authentication_string。2.使用mysqladmin命令修改密码使用mysqladmin命令修改root用户密码的基本语法形式如下:mysqladmin-uusername-hlocalhost-ppassword"newpwd"username为要修改密码的用户名,此处指定为root用户;参数-h指定要修改的服务器地址,可以不写,默认为localhost;-p表示输入当前密码;password为关键字,后面双引号中的内容newpwd为要设置的新密码。【实例17-6】使用mysqladmin命令将root用户的密码修改为123456。mysqladmin命令及其执行结果如下:C:\Users\ccy>mysqladmin-uroot-hlocalhost-ppassword"123456"Enterpassword:*******按照要求输入root用户原来的密码,执行完毕后,新密码即被设定完成。下次登录MySQL就要使用新密码了。3.使用SET语句修改root用户密码使用SET语句可以重新设置自身或其他用户的登录密码。修改自身登录密码的语法结构如下:SETPASSWORD=PASSWORD("newpwd");新密码必须使用PASSWORD()函数加密。【实例17-7】使用SET语句将root用户的密码修改为root123。使用root用户登录MySQL服务器后,执行SET语句,结果如下:mysql>SETPASSWORD=PASSWORD("root123");QueryOK,0rowsaffected,1warning(0.04sec)SET语句执行成功后,为使设置生效,需要重启MySQL或执行FLUSHPRIVILEGES;语句刷新权限,重新加载权限表。执行结果如下:mysql>FLUSHPRIVILEGES;QueryOK,0rowsaffected(0.04sec)下次使用root用户登录MySQL时,便需要使用新密码了。17.2.4root用户修改普通用户密码使用root用户不仅可以修改自身密码,还可以修改普通用户的密码。使用root用户修改普通用户密码的方法有多种,本节简单介绍几种常用方法。1.使用SET语句修改普通用户密码使用SET语句修改普通用户密码的语法格式如下:SETPASSWORDFOR'user'@'host'=PASSWORD('newpwd');如果是普通用户修改自身密码,则可以省略FOR子句:SETPASSWORD=PASSWORD('newpwd');【实例17-8】使用SET语句将lucy用户的密码修改为123456。使用root用户登录MySQL服务器后,执行SET语句,结果如下:mysql>SETPASSWORDFOR'lucy'@'localhost'=PASSWORD('123456');QueryOK,0rowsaffected,1warning(0.02sec)SET语句执行成功后,lucy用户的密码被修改为123456。2.使用UPDATE语句修改普通用户密码在使用root用户登录MySQL服务器后,可以通过执行UPDATE语句修改mysql数据库中user表的authentication_string字段值,来修改普通用户的密码。使用UPDATE语句修改普通用户密码的基本语法格式如下:UPDATEmysql.userSETauthentication_string=PASSWORD("newpwd")WHEREuser="username"ANDhost="hostname";PASSWORD()函数用于加密用户密码。执行该语句后,需要执行FLUSHPRIVILEGES;语句刷新权限,重新加载权限表。【实例17-9】使用UPDATE语句将lucy用户的密码修改为lucy123456。使用root用户登录MySQL服务器后,执行UPDATE语句,结果如下:mysql>UPDATEmysql.userSETauthentication_string=PASSWORD("lucy123456")WHEREuser="lucy"ANDhost="localhost";QueryOK,1rowaffected,1warning(0.07sec)Rowsmatched:1Changed:1Warnings:1UPDATE语句执行成功后,需要执行FLUSHPRIVILEGES;语句刷新权限,重新加载权限表。执行结果如下:mysql>FLUSHPRIVILEGES;QueryOK,0rowsaffected(0.03sec)3.使用GRANT语句修改普通用户密码除前面介绍的两种方法外,还可以使用GRANT语句指定某个账号的密码,而不影响账号当前权限。只有拥有GRANT权限,才能使用GRANT语句修改密码。使用GRANT语句修改普通用户密码的基本语法格式如下:GRANTUSAGEON*.*TO'username'@'hostname'IDENTIFIEDBY'newpwd';【实例17-10】使用GRANT语句将lucy用户的密码修改为lucy123。使用root用户登录MySQL服务器后,执行GRANT语句,结果如下:mysql>GRANTUSAGEON*.*TO'lucy'@'localhost'IDENTIFIEDBY'lucy123';QueryOK,0rowsaffected,1warning(0.04sec)执行完GRANT语句后,lucy用户的密码被修改为lucy123。下次即可使用新密码登录MySQL服务器。【提示】在使用GRANT语句或mysqladmin命令修改用户密码时,密码均会自动加密,不需要使用PASSWORD()函数。17.2.5普通用户修改密码普通用户登录MySQL服务器后,可以使用SET语句设置自身密码。基本语法格式如下:SETPASSWORD=PASSWORD('newpwd');【实例17-11】用户lucy使用SET语句将自身密码修改为lucy123456。执行SQL语句,使用用户lucy登录MySQL服务器:C:\Users\ccy>mysql-hlocalhost-ulucy-pEnterpassword:*******执行SET语句,修改lucy用户自身密码,结果如下:mysql>SETPASSWORD=PASSWORD('lucy123456');QueryOK,0rowsaffected,1warning(0.02sec)成功执行SET语句后,lucy用户的密码被设置为lucy123456,下次可以使用新密码登录MySQL服务器。17.2.6root用户密码丢失的解决方法对于root用户密码丢失这种问题,可以通过特殊方法登录MySQL服务器,然后在root用户下重新设置登录密码。下面通过实例详细介绍具体方法。【实例17-12】在忘记root用户密码的情况下,重新设置其密码为123456。步骤

1打开“管理员:命令提示符”窗口,执行netstopmysql命令,停止MySQL服务器。步骤2接着在命令窗口中执行mysqld--skip-grant-tables命令启动MySQL服务:mysqld--defaults-file="F:\mysql-5.7.18-winx64\my.ini"--skip-grant-tables此处的路径F:\mysql-5.7.18-winx64\my.ini为MySQL实际安装路径,读者可根据实际情况修改。步骤3打开“命令提示符”窗口,执行mysql-uroot-p命令,在提示输入密码时直接回车,不用输入密码。mysql-uroot-p……(详见教材)【学生】聆听、思考、记录通过教师的讲解和演示,使学生了解MySQL权限表,以及账号管理的相关知识第二节课问题导入(5min)【教师】提出以下问题:如何合理地将权限表中的不同权限分配给不同用户?【学生】思考、举手回答通过问题导入,引导学生主动思考,激发学生的学习兴趣传授新知(20min)【教师】通过学生的回答引入新知,介绍MySQL权限管理的相关知识17.3MySQL权限管理在认识了权限表,并了解了账号管理的相关知识后,本节学习如何合理地将权限表中的不同权限分配给不同用户,也就是MySQL权限管理。17.3.1MySQL权限介绍MySQL账号的权限信息存储在4个控制权限的权限表中。在MySQL启动时,服务器将这些信息读入内存。MySQL支持的权限如表17-2所示。✈【教师】通过多媒体展示“MySQL支持的权限”表格,介绍相关知识表17-2MySQL支持的权限权限权限范围权限说明CREATE数据库、表或索引创建数据库、表或索引的权限DROP数据库、表或视图删除数据库、表或视图的权限GRANTOPTION数据库、表或存储过程赋予权限选项REFERENCES数据库或表EVENT数据库在事件调度里创建、更改、删除和查看事件ALTER表更改表,比如添加字段、索引等DELETE表删除数据权限INDEX表索引权限INSERT表插入数据权限SELECT表或列查询权限UPDATE表或列更新权限CREATETEMPORARYTABLES表创建临时表权限LOCKTABLES表锁表权限TRIGGER表创建触发器权限CREATEVIEW视图创建视图的权限SHOWVIEW视图显示视图的权限ALTERROUTINE存储过程和函数更改存储过程和函数的权限CREATEROUTINE存储过程和函数创建存储过程和函数的权限EXECUTE存储过程和函数执行存储过程的权限FILE访问服务器上的文件文件访问权限CREATEUSER服务器管理创建用户权限PROCESS存储过程和函数查看进程权限RELOAD服务器管理执行flush-hosts,flush-logs,flush-privileges,refresh和reload等权限REPLICATIONCLIENT服务器管理复制权限REPLICATIONSLAVE服务器管理复制权限SHOWDATABASES服务器管理查看数据库权限SHUTDOWN服务器管理关闭数据库权限SUPER服务器管理执行kill线程权限✈【教师】随机邀请学生回答以下问题:MySQL中的权限有几个级别?✈【学生】聆听、思考、回答✈【教师】总结学生的回答MySQL中的权限,根据其操作对象的不同,可以分为4个级别。全局性管理权限:该类权限主要是对服务器进行管理,作用于整个给定服务器中的所有数据库,前面GRANT语句中的*.*就代表所有数据库的权限。这些权限存储在mysql.user表中,决定了来自哪些主机的哪些用户可以访问数据库,如果有全局权限则意味着对所有数据库都有此权限。数据库级别权限:该类权限适用于一个给定数据库中的所有目标,主要用于控制对指定数据库进行的操作。这些权限存储在mysql.db表中,决定了来自哪些主机的哪些用户可以访问此数据库。数据库对象级别权限:该类权限作用于指定的数据库对象(如表、视图等)或所有数据库对象上。这些权限存储在mysql.tables_priv表中,决定了来自哪些主机的哪些用户可以访问此数据库的这个表。列级别权限:该类权限作用于一个给定表中的单一列,这些权限存储在mysql.Columns_priv表中,决定了来自哪些主机的哪些用户可以访问此数据库中这个表的这个字段。17.3.2查看账号权限创建好账号后,可以使用SHOWGRANTS语句查看账号的权限信息,其基本语法格式如下:SHOWGRANTSFOR'user'@'host';其中user表示登录用户名,host表示登录的主机名或IP地址。在使用该语句时,指定的用户名和主机名都要用单引号引起来,并在两个名字中间使用@符号连接。【实例17-13】使用SHOWGRANTS语句查看用户lucy的权限信息。打开命令窗口,登录MySQL并执行SHOWGRANTS语句。语句及其执行结果如下:mysql>SHOWGRANTSFOR'lucy'@'localhost';++|Grantsforlucy@localhost|++|GRANTSELECT,UPDATEON*.*TO'lucy'@'localhost'|++1rowinset(0.01sec)返回结果的第1行显示了user表中的账号信息;下面的行显示了用户被授予的权限,GRANTSELECT,UPDATEON表示用户被授予了SELECT和UPDATE权限;*.*表示被授予的权限作用于所有数据库。GRANT可以显示全局级和非全局级权限的详细信息,如果表或列层级的权限被授予用户,它们也能在结果中显示。除上述方法外,也可以使用SELECT语句查看权限表中各权限字段值来确定用户的权限信息,其基本语法格式如下:SELECTprivileges_listFROMmysql.userWHEREuser='username'ANDhost='hostname';其中的privileges_list为想要查看的权限字段,可以为select_priv,insert_priv等,各字段之间使用逗号隔开。17.3.3给账号授权给账号授权就是将某个权限授予某个用户。合理的授权可以保证数据库的安全。在MySQL中使用GRANT语句为账号授权,其基本语法格式如下:GRANTpriv_type[,priv_type...]ONdb.tableTOuser@host[WITHwith_option[with_option]...];同创建账号时一样,priv_type表示赋予用户的权限类型,比如SELECT,UPDATE等;db.table表示用户的权限所作用的数据库中的表,*.*表示所有数据库的所有表;user表示用户名;host表示主机名;[WITHwith_option[with_option]...]为可选参数,除了可以对新创建的用户赋予GRANT权限外,其可取值还有4个,用于账号资源限制,各值及其意义分别如下:MAX_QUERIES_PER_HOURcount:设置每小时可以执行count次查询。MAX_UPDATES_PER_HOURcount:设置每小时可以执行count次更新。MAX_CONNECTIONS_PER_HOURcount:设置每小时可以建立count个连接。MAX_USER_CONNECTIONScount:设置单个用户可以同时建立count个连接。【实例17-14】使用GRANT语句为用户lucy授予对所有数据库的INSERT权限。打开命令窗口,登录MySQL并执行GRANT语句。语句及其执行结果如下:mysql>GRANTINSERTON*.*TO'lucy'@'localhost';QueryOK,0rowsaffected(0.23sec)结果显示执行成功,使用SELECT语句查询用户lucy的权限:mysql>SELECThost,user,insert_priv,select_priv,update_privFROMmysql.userWHEREuser='lucy';++++++|host|user|insert_priv|select_priv|update_priv|++++++|localhost|lucy|Y|Y|Y|++++++1rowinset(0.00sec)查询结果显示,用户lucy除具有创建时被授予的SELECT和UPDATE权限外,同时也被授予了INSERT权限,其相应字段的值均为Y。17.3.4收回权限收回权限就是取消用户已有的某些权限。收回用户不必要的权限可以在一定程度上保证系统的安全。MySQL中使用REVOKE语句取消用户权限。取消用户权限后,用户账号的记录将从db,tables_priv和columns_priv表中删除,但是用户账号记录依然保存在user表中(可以使用DROPUSER语句删除user表中的账号记录)。REVOKE语句的基本语法格式如下:REVOKEpriv_type[,priv_type]...ONdb.tableFROM'user'@'host'[,'user'@'host'...]该语句收回指定的权限,其中priv_type参数表示权限类型;db.table表示从哪个数据库哪个表上

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论