mysql(创建修改删除)用户与(授予撤销查看)权限(含实战练习)

本博文源于mysql基础,主要对用户与权限学习与练习。涉及内容:创建用户、修改用户、删除用户、授予用户权限、撤销用户权限、查看用户权限。

用户管理

在mysql的日常管理和实际操作中,为了避免用户恶意冒名使用root帐号控制数据库,通常需要创建一系列具备适当权限的帐号,应该尽可能地不用或少用root帐号登录系统,防止用户非安全访问。

创建用户

格式

CREATE USER <用户名> [IDENTIFIED] BY [PASSWORD] <口令>

创建用户需要注意以下几点:

  • 如果使用CREATE USER语句时没有为用户指定口令,那么MySQL允许该用户可以不使用口令登陆系统。
  • 使用CREATE USER语句必须拥有MySQL中mysql数据库地INSERT权限或全局CREATE USER权限。
  • 使用CREATE USER语句创建一个用户,数据库用户表添加一条用户记录,如果用户存在,返回错误。
  • 新创建地用户拥有权限很少。他们可以登录MySQL,只允许进行不需要权限的操作。如show。
  • 如果两个用户具有相同的用户名但不同的主机名,这两个用户被认为不同。
例子:使用CREATE USER创建一个用户,用户名是james,密码是tiger,主机是localhost
create user 'james'@'localhost' identified by 'tiger';

mysql(创建修改删除)用户与(授予撤销查看)权限(含实战练习)_第1张图片

修改用户

可以使用RENAME USER语句修改一个或多个已经存在地MySQL用户账号。

RENAME USER <旧用户> TO <新用户>

需要注意的是:

  • RENAME USER 语句用于对原有的MySQL账户进行重命名
  • 若系统中旧账户不存在或者新账户已存在,语句会出错
  • 要使用RENAME USER命令,必须拥有MySQL中的mysql数据库的UPDATE权限或全局CREATE USER权限

修改用户口令使用SET PASSWORD

SET PASSWORD [ FOR <用户名> ] = 
{
	PASSWORD('新明文口令') } OLD_PASSWORD('旧明文口令') | '加密口令值'
}

修改用户密码注意:

  • 在SET PASSWORD语句中,若不加上FOR子句,表示修改当前用户 若加上FOR子句,就是修改用户表里的用户口令;其中,user必须以‘user_name’@‘host_name’的格式给定。账户不存在,就会报错。
  • 在SET PASSWORD语句中,只能使用选项PASSWORD(‘新明文口令’)和加密口令值中的一项,且必须使用其中的一项。
例子:使用RENAME USER语句将用户名james修改为jack,主机是localhost
 rename user james@'localhost' to jack@'localhost';

在这里插入图片描述

例子:使用SET语句将用户为jack的密码修改为lion,主机是localhost
 set password for 'jack'@'localhost'=password('lion');

mysql(创建修改删除)用户与(授予撤销查看)权限(含实战练习)_第2张图片

删除用户

可以使用drop user语句来删除一个或多个用户帐号以及相关的权限

DROP USER <用户名1> [,<用户名2>]...

需要注意的是

  • DROP USER语句可用于删除一个或多个MySQL帐号,并撤销其原有权限
  • 使用这条语句必须有DELETE或者全局CREATE USER权限
  • 在DROP USER语句的使用中,若没有明确给出账户的主机名,则该主机名默认为“%”
例子:使用DROP USER语句删除用户’jack’@'localhost’账户
 drop user 'jack'@'localhost';

在这里插入图片描述

权限管理

用户创建成功后,需要为用户分配适当的访问权限

授予用户权限

对于新建的mysql用户,必须给它授权,可以用GRANT语句来实现对新建用户的授权
语法格式:

GRANT 
<权限类型> [ (<列名>)][,<权限类型> [(<列名>)]]
ON <对象> <权限类别> TO <用户>

其中<用户>的格式:

<用户名> [IDENTIFIED] BY [PASSWORD] <口令>
[WITH GRANT OPTION]
| MAX_QUERIES_PER_HOUR <次数>
| MAX_UPDATES_PER_HOUR <次数>
| MAX_CONNECTIONS_PER_HOUR <次数>
| MAX_USER_CONNECTIONS <次数>

mysql(创建修改删除)用户与(授予撤销查看)权限(含实战练习)_第3张图片

例子:使用grant语句创建一个新的用户testUser,密码为testPwd.用户testUser对所有的数据有查询、插入权限,并授予GRANT权限。
 grant select,insert on *.* to 'testUser'@'localhost'
  identified by 'testPwd' with grant option;

在这里插入图片描述

例子:使用select语句查询用户testUser的权限
 select Host,User,Select_priv,Grant_priv from mysql.user where User = 'testUser';

mysql(创建修改删除)用户与(授予撤销查看)权限(含实战练习)_第4张图片

撤销用户权限

可以使用REVOKE语句撤销一个用户的权限,此用户不会被删除
有两种格式,第一种:

REVOKE <权限类型> [(<列名>)] [,<权限类型>[(<列名>)]]...
ON <对象类型> <权限名> FROM <用户1> [,<用户2>]...

第二种:

REVOKE ALL PRIVILEGES,GRANT OPTION
FROM user <用户1> [,<用户2>]...

需要注意的是:

  • REVOKE语法和GRANT语句的语法格式相似,但具有相反的效果
  • 第一种语法格式用于回收某些特定的权限
  • 第二种语法格式用于回收特定用户的所有权限
  • 要使用REVOKE语句,必须拥有mysql数据库的全局CREATE USER权限或UPDATE权限
例子:撤销用户testUser的插入权限
revoke insert on *.* from 'testUser'@'localhost';

mysql(创建修改删除)用户与(授予撤销查看)权限(含实战练习)_第5张图片

例子:使用select语句查询用户是否具有插入权限
 select Host,User,Select_priv,Insert_priv,Grant_priv 
 from mysql.user where User = 'testUser';

mysql(创建修改删除)用户与(授予撤销查看)权限(含实战练习)_第6张图片

你可能感兴趣的:(mysql,数据库,mysql,sql)