二十、MySQL之用户权限管理(用户管理、权限管理、忘记root密码的解决方案)

用户权限管理:在不同的项目中给不同的角色(开发者)不同的操作权限,为了保证数据库数据的安全。

通常,一个用户的密码不会长期不变,所以需要经常性的变更数据库用户密码来确保用户本身安全(mysql客户端用户)

一、用户管理

Mysql需要客户端进行连接认证才能进行服务器操作:需要用户信息。Mysql中所有的用户信息都是保存在mysql数据库下的user表中。
在这里插入图片描述
默认的,在安装Mysql的时候,如果不选择创建匿名用户,那么意味着所有的用户只有一个:root超级用户:
在这里插入图片描述
在mysql中,对用的用户管理中,是由对应的HostUser共同组成主键来区分用户。
User:代表用户的用户名
Host:代表本质是允许访问的客户端(IP或者主机地址)
如果host使用%代表所有的用户(客户端)都可以访问

1.1 创建用户

理论上讲可以采用两种方式创建用户:

  1. 直接使用root用户在mysql.user表中插入记录(不推荐)
  2. 专门创建用户的SQL指令

基本语法:create user 用户名 identified by ‘明文密码’;
用户:用户名@主机地址
主机地址:’’ / ‘%’
在这里插入图片描述
查看mysql.user表中是否存在新增的用户:
在这里插入图片描述
简化版创建用户(谁都可以访问,不需要密码):
在这里插入图片描述
当用户创建完成之后,用户是否可以使用?
在这里插入图片描述

1.2 删除用户

注意:mysql中user是带着host本身的(具有唯一性)
基本语法:drop user 用户名@host;
在这里插入图片描述

1.3 修改用户密码

Mysql中提供了多种修改的方式:基本上都必须使用对应提供的一个系统函数:password(),需要靠该函数对密码进行加密处理。

  1. 使用专门的修改密码的指令
    基本语法:set password for 用户 = password(‘新的明文密码’);
    在这里插入图片描述
    修改后的数据测试:
    在这里插入图片描述
  2. 使用更新语句update来修改表
    基本语法:update mysql.user set password = password(‘新的明文密码’) where user = ‘’ and host= ‘’;

二、权限管理

在mysql中将权限管理分为三类:

  1. 数据权限:增删改查(select\update\delete\insert)
  2. 结构权限:结构操作(create\drop)
  3. 管理权限:权限管理(create user\grant\revoke):通常只给管理员如此权限

2.1 授予权限:grant

将权限分配给指定的用户
基本语法:grant 权限列表 on 数据库/.表名/ to 用户;

权限列表:使用逗号分隔,但是可以使用all privileges代表全部权限

数据库.表名:可以是单表(数据库名字.表名),可以是具体某个数据库(数据库.),也可以整库(.*)
在这里插入图片描述
用户被分配权限以后不需要退出就可以看到效果:
在这里插入图片描述
具体权限查看:单表权限只能看到数据库中的一张表:
在这里插入图片描述

2.2 取消权限:revoke

权限回收:将权限从用户手中收回
基本语法:revoke 权限列表/all privileges on 数据库/.表/ from 用户;
在这里插入图片描述
权限回收,同样不需要刷新,用户马上就会感受到:
在这里插入图片描述

2.3 刷新权限:flush

Flush:刷新,将当前对用户的权限操作,进行一个刷新,将操作的具体内容同步到对应的表中。
基本语法:flush privileges;
在这里插入图片描述

三、密码丢失的解决方案

如果忘记了root用户密码,就需要去找回或者重置root用户密码

  1. 停止服务
    在这里插入图片描述
  2. 重新启动服务:mysqld.exe –skip-grant-tables //启动服务器但是跳过权限
    在这里插入图片描述
  3. 当前启动的服务器没有权限概念:非常危险,任何客户端,不需要任何用户信息都可以直接登录,而且是root权限:新开客户端,使用mysql.exe登录即可
    在这里插入图片描述
  4. 修改root用户的密码:指定 用户名@host
    在这里插入图片描述
  5. 赶紧关闭服务器,重启服务
    在这里插入图片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章