(中职)MySQL 8.0数据库管理与应用第9章教学课件().pptx
(中职)MySQL 8.0数据库管理与应用第9章教学课件(工信版)第第9 9章章 用户与角色用户与角色9.1.1 创建用户CREATE USER语句来创建一个或多个用户账户:CREATE USER IF NOT EXISTS用户 身份验证选项,用户 身份验证选项.DEFAULT ROLE 角色,角色.REQUIRE NONE|SSL/TLS选项 AND SSL/TLS选项.WITH 资源选项 资源选项.密码选项|锁定选项.用户:用户名主机名9.1 9.1 用户管理用户管理9.1.1 创建用户身份验证选项:IDENTIFIED BY 身份验证字符串|IDENTIFIED WITH 身份验证插件|IDENTIFIED WITH身份验证插件 BY 身份验证字符串|IDENTIFIED WITH身份验证插件 AS 哈希字符串SSL/TLS选项:SSL|X509|CIPHER 密码|ISSUER 颁发者|SUBJECT 主题资源选项:MAX_QUERIES_PER_HOUR count|MAX_UPDATES_PER_HOUR count|MAX_CONNECTIONS_PER_HOUR count|MAX_USER_CONNECTIONS count9.1 9.1 用户管理用户管理9.1.1 创建用户密码选项:PASSWORD EXPIRE DEFAULT|NEVER|INTERVAL N DAY|PASSWORD HISTORY DEFAULT|N|PASSWORD REUSE INTERVAL DEFAULT|N DAY|PASSWORD REQUIRE CURRENT DEFAULT|OPTIONAL锁定选项:ACCOUNT LOCK|ACCOUNT UNLOCK9.1 9.1 用户管理用户管理9.1.2 修改用户使用ALTER USER语句来修改现有MySQL账户的身份验证、角色、SSL/TLS、资源限制以及密码管理属性,并启用账户锁定和解锁:ALTER USER IF EXISTS用户 身份验证选项,用户 身份验证选项.REQUIRE NONE|SSL/TLS选项 AND SSL/TLS选项.WITH 资源选项 资源选项.密码选项|锁定选项.用户:用户名主机名身份验证选项:IDENTIFIED BY 身份验证字符串 REPLACE 当前身份验证字符串|IDENTIFIED WITH 身份验证插件|IDENTIFIED WITH 身份验证插件BY 身份验证字符串 REPLACE 当前身份验证字符串|IDENTIFIED WITH 身份验证插件 AS 哈希字符串 9.1 9.1 用户管理用户管理9.1.2 修改用户SSL/TLS选项:SSL|X509|CIPHER 密码|ISSUER 颁布者|SUBJECT 主题 资源选项:MAX_QUERIES_PER_HOUR count|MAX_UPDATES_PER_HOUR count|MAX_CONNECTIONS_PER_HOUR count|MAX_USER_CONNECTIONS count密码选项:PASSWORD EXPIRE DEFAULT|NEVER|INTERVAL N DAY|PASSWORD HISTORY DEFAULT|N|PASSWORD REUSE INTERVAL DEFAULT|N DAY|PASSWORD REQUIRE CURRENT DEFAULT|OPTIONAL 锁定选项:ACCOUNT LOCK|ACCOUNT UNLOCK 9.1 9.1 用户管理用户管理9.1.3 重命名用户使用RENAME USER语句对现有MySQL用户进行重命名:RENAME USER 旧用户 TO 新用户,旧用户 TO 新用户.其中每个账户名使用 用户名主机名 格式指定。如果省略账户名的主机名部分,则默认为。如果不存在的旧账户或者已经存在新账户,则会出错。要使用RENAME USER语句,必须具有全局CREATE USER权限或mysql系统数据库的UPDATE权限。启用read_only系统变量时,RENAME USER还需要CONNECTION_ADMIN或SUPER权限。RENAME USER使旧用户拥有的权限成为新用户持有的权限。但是,RENAME USER不会自动删除旧用户创建的数据库或对象。这包括DEFINER属性为旧用户命名的存储程序或视图。如果在定义的安全性上下文中执行,则尝试访问此类对象可能会产生错误。9.1 9.1 用户管理用户管理9.1.4 修改密码使用SET PASSWORD语句可以为MySQL用户账户分配密码,语法格式如下。SET PASSWORD FOR 用户=身份验证字符串 REPLACE 当前身份验证字符串设置指定账户的密码(带有FOR子句)需要mysql系统数据库的UPDATE权限。为自己设置密码(对于没有FOR子句的非用户账户)不需要特殊权限。启用read_only系统变量时,除了任何其他所需权限外,SET PASSWORD还需要CONNECTION_ADMIN或SUPER权限。如果给定REPLACE子句,则必须指定要替换的当前账户密码。如果需要对账户密码进行修改,则必须提供当前密码。如果给出了该子句但与当前密码不匹配,则语句失败。只有在更改当前用户的账户密码时才能指定REPLACE子句。在SET PASSWORD语句中,FOR子句是可选的。如果使用FOR子句,则可以设置指定账户的密码。例如:SET PASSWORD FOR jeffreylocalhost=auth_string;如果没有使用FOR子句,则设置当前用户的密码。例如:SET PASSWORD=auth_string;使用非账户账户连接到服务器的任何客户端都可以更改该账户的密码。9.1 9.1 用户管理用户管理9.1.5 删除用户在MySQL中,可以使用DROP USER语句删除一个或多个MySQL用户及其权限,从所有授权表中删除用户的权限行,语法格式如下。DROP USER IF EXISTS 用户,用户.要使用DROP USER语句,必须具有全局CREATE USER权限或mysql系统数据库的DELETE权限。启用read_only系统变量时,DROP USER还需要CONNECTION_ADMIN或SUPER权限。DROP USER对所有命名用户都成功或回滚,如果发生任何错误则无效。默认情况下,如果尝试删除不存在的用户,则会发生错误。如果给出了IF EXISTS子句,则该语句会为每个不存在的命名用户生成警告而不是错误。如果语句执行成功,则将语句写入二进制日志,如果失败则不写入。在这种情况下,发生回滚并且不进行任何更改。每个用户账户使用 用户名主机名 格式。如果省略主机名部分,则默认为%。DROP USER语句不会自动关闭任何打开的用户会话。相反,如果删除了具有打开会话的用户,则该语句在该用户的会话关闭之前不会生效。当会话关闭后,用户将被删除,该用户下次尝试登录将失败。DROP USER不会自动删除旧用户创建的数据库或对象。这包括存储程序或视图,DEFINER属性为已删除的命名用户。如果在定义的安全性上下文中执行,则尝试访问此类对象可能会产生错误。9.1 9.1 用户管理用户管理9.2.1 创建角色在MySQL中,可以使用CREATE ROLE语句创建一个或多个角色,语法格式如下。CREATE ROLE IF NOT EXISTS 角色,角色.要使用CREATE ROLE语句,必须具有全局CREATE ROLE或CREATE USER权限。启用read_only系统变量时,CREATE ROLE还需要CONNECTION_ADMIN或SUPER权限。创建时的角色已被锁定,没有密码,并被分配了默认的身份验证插件。CREATE ROLE对所有命名角色成功或回滚,如果发生任何错误则无效。默认情况下,如果尝试创建已存在的角色,则会发生错误。如果给出了IF NOT EXISTS子句,则该语句会为已存在的每个命名角色生成警告而不是错误。如果成功,则将语句写入二进制日志,但如果失败则不写入。在这种情况下,发生回滚并且不进行任何更改。写入二进制日志的语句包括所有命名角色。如果给出IF NOT EXISTS子句,则包括已存在且未创建的角色。9.2 9.2 角色管理角色管理9.2.2 授予权限使用GRANT语句为用户账户和角色分配权限或角色:GRANT 权限类型(列名列表),权限类型(列名列表).ON 对象类型 权限级别 TO 用户或角色,用户或角色.WITH GRANT OPTIONGRANT PROXY ON 用户或角色TO 用户或角色,用户或角色.WITH GRANT OPTIONGRANT 角色,角色.TO 用户或角色,用户或角色.WITH ADMIN OPTION对象类型:TABLE|FUNCTION|PROCEDURE 权限级别:*|*.*|数据库名.*|数据库名.表名|表名|数据库名.例程名 用户或角色:用户|角色 用户:用户名主机名角色:角色名主机名9.2 9.2 角色管理角色管理9.2.3 撤消权限p从指定MySQL用户账户或角色中撤消已授予的权限:REVOKE 权限类型(列名列表),权限类型(列名列表).ON 对象类型 权限级别FROM 用户或角色,用户或角色.p从指定MySQL用户账户或角色中撤消已授予的所有权限:REVOKE ALL PRIVILEGES,GRANT OPTIONFROM 用户或角色,用户或角色.p从MySQL用户账户或角色中撤消用户代理:REVOKE PROXY ON 用户或角色FROM 用户或角色,用户或角色.p从MySQL用户账户或角色中撤消已授予的角色:REVOKE 角色,角色.FROM 用户或角色,用户或角色.用户或角色:用户|角色9.2 9.2 角色管理角色管理9.2.4 激活角色1.SET DEFAULT ROLE语句SET DEFAULT ROLENONE|ALL|角色,角色.TO 用户,用户.2.SET ROLE语句SET ROLE DEFAULT|NONE|ALL|ALL EXCEPT 角色,角色.|角色,角色.9.2 9.2 角色管理角色管理9.2.5 删除角色使用DROP ROLE语句删除一个或多个角色:DROP ROLE IF EXISTS 角色,角色.要使用DROP ROLE语句,必须具有全局DROP ROLE或CREATE USER权限。当启用read_only系统变量时,DROP ROLE还需要CONNECTION_ADMIN或SUPER权限。无法删除在mandatory_roles系统变量值中命名的角色。DROP ROLE对所有命名角色成功或回滚,如果发生任何错误则无效。默认情况下,如果尝试删除不存在的角色,则会发生错误。如果给出了IF EXISTS子句,则该语句会为每个不存在的命名角色生成警告而不是错误。如果成功,则将语句写入二进制日志,但如果失败则不写入。在这种情况下,发生回滚并且不进行任何更改。写入二进制日志的语句包括所有命名角色。如果给出了IF EXISTS子句,则包括不存在且未被删除的角色。每个角色名称使用 角色名主机名。如果省略主机名部分,则默认为。已被删除的角色会自动从已授予角色的任何用户账户(或角色)中撤消。在此类账户的任何当前会话中,将针对下一个执行的语句调整其权限。9.2 9.2 角色管理角色管理