04-03-用户权限管理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lucky9322/article/details/85775216

用户权限管理

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

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

用户管理

MySQL需要客户端进行连接认证才能进行服务器操作:需要用户信息,MySQL中所有的用户信息都是保存在MySQL数据库下的user表中

select * from mysql.user \G;

在这里插入图片描述

默认的,在安装MySQL的时候,如果不选择匿名用户,那么意味着所有的用户只有一个:root

在这里插入图片描述

MySQL中,对用的用户管理中,是由对应的hostuser共同组成主键来区分用户。

user:代表用户的用户名

host:代表的本质是允许访问的客户端(IP或者主机地址)。如果host%则代表所有客户端都可以访问。

创建用户

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

  1. 直接使用root用户在mysql.user表中插入记录(不推荐)

  2. 专门创建用户的SQL指令

    基本语法:create user 用户 identified by 密码;

    用户:用户名@主机地址

    如果不限制主机地址则用%代替

    create user 'user1'@'%' identified by '123456';

    在这里插入图片描述

删除用户

注意:MySQLuser是带着host本身的(具有唯一性)

基本语法:drop user 用户名@host;

drop user user1@'%'

在这里插入图片描述

修改用户密码

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

  1. 使用专门修改密码的指令

    基本语法:alter user 用户 identified by '新的密码';

    alter user 'user1'@'%' identified by '654321'

权限管理

MySQL中将权限管理分为三类

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

授予权限:grant

将权限分配给指定的用户。

基本语法:grant 权限列表 on 数据库.表名 to 用户

权限列表:用逗号分隔,但是可以用all privileges代表所有权限

数据库.表名:可以是单表(数据库.表名),可以是具体某个数据库(数据库.*),也可以是整库(*.*

grant select on mydb.my_student to 'user1'@'%';

取消权限:revoke

权限回收:将权限从用户手中收回

基本语法:revoke 权限列表 on 数据库.表名 from 用户

revoke all privileges on mydb.my_student from 'user1'@'%';

刷新权限:flush

将当前对用户的权限操作,进行一个刷新,将操作的具体内容同步到对应的表中。

基本语法:flush privileges

密码丢失的解决方案

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

  1. 停止服务(也可在preference中关闭)

    在这里插入图片描述

  2. 重启服务sudo mysqld_safe --skip-grant-tables// 启动服务器但是跳过权限

    在这里插入图片描述

  3. 此时MySQL服务器端已经启动,不过当前的服务器没有权限概念:非常危险,任何客户端,不需要任何用户信息都可以直接登录,而且是root权限。

    在这里插入图片描述
    在这里插入图片描述

  4. 修改root用户的密码:指定 用户名@host

    use mysql;
    flush privileges;
    alter user 'root'@'localhost' identified with mysql_native_password by '87654321';
    

    在这里插入图片描述

  5. 关闭此时的服务器,并重启服务

    sudo /usr/local/mysql/support-files/mysql.server stop
    sudo /usr/local/mysql/support-files/mysql.server start
    

猜你喜欢

转载自blog.csdn.net/lucky9322/article/details/85775216