• mysql的用户权限设置


    一、首先我们需要来看一下mysql默认数据库里面的四张表(user,db,tables_priv,columns_priv)。

    1、user表(用户层权限)

    因为字段太多,只截取了一部分。首先登陆的时候验证Host,User,Password也就是ip,用户名,密码是否匹配,匹配登陆成功将会为登陆者分配权限,分配权限的顺序也是按照上面四张表的排列顺序进行的,举个例子,如果user表的Select_priv为Y说明他拥有所有表的查找权限,如果为N就需要到下一级db表中进行权限分配了。其中的%是通配符,代表任意的意思。

    2、db表(数据库层权限)

    来到db表之后会匹配Host,User然后会根据Db字段对应的表进行权限分配,像Select_priv这些字段对应的权限大家应该都能看出来是对应着什么权限了吧,这里不细说了(不偷懒,举个例子Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv分别代表着查询,增加,更新,删除,创建,销毁)。其中Y代表这拥有此项权限,N则代表没有此项权限。

    3、tables_priv表(表层权限)

    与上面一样,这是通过Host,Db,User,Table来进行定位到表层的一个权限分配。不过它只有Table_priv和Column_priv两个字段来记录权限。

    4、columns_priv表(字段层权限)

    顾名思义,字段层权限,通过Host,Db,User,Table,Column来进行定位到字段层的一个权限分配,只有Column_priv来记录权限。

    二、使用grant命令来分配权限

    大致格式:grant 权限 on 数据库对象 to 用户 identified by 密码

    我们通过两条命令来解读下:

    grant all on test.* to 'root'@'%' identified by '123456' with grant option; 

    上面这条命令的意思是给root@%这个用户对应的test数据库分配所有操作权限,identified by是需要进行的一个密码认证。把all换成USAGE就表示这个用户除了登陆啥都干不了。

    grant select, insert, update, delete on test.* to 'root'@'%' identified by '123456' with grant option; 

    上面这条命令则是给root@%这个用户对应的test数据库分配了增删改查的操作权限。

    查看某个用户的权限:show grants for 'root'@'%'; 

    查看当前用户: SELECT CURRENT_USER();
    ---------------------
    版权声明:本文为CSDN博主「程序员阿坤」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/kkkun_joe/article/details/81023427

  • 相关阅读:
    奇异值分解 SVD 的数学解释
    [实现] 利用 Seq2Seq 预测句子后续字词 (Pytorch)2
    [实现] 利用 Seq2Seq 预测句子后续字词 (Pytorch)
    pycharm debug后会出现 step over /step into/step into my code /force step into /step out 分别表示
    单步调试 step into/step out/step over 区别
    终端(terminal)、tty、shell、控制台(console)、bash之间的区别与联系
    pytorch: Variable detach 与 detach_
    RNN,LSTM,GRU基本原理的个人理解
    FMDB官方使用文档-GCD的使用-提高性能(翻译)
    CocoaPods一个Objective-C第三方库的管理利器
  • 原文地址:https://www.cnblogs.com/zhlan/p/11319661.html
Copyright © 2020-2023  润新知