zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Linux下sed,awk,grep,cut,find学习笔记
    Python文件处理(1)
    KMP详解
    Java引用详解
    解决安卓中页脚被输入法顶起的问题
    解决swfupload上传控件文件名中文乱码问题 三种方法 flash及最新版本11.8.800.168
    null id in entry (don't flush the Session after an exception occurs)
    HQL中的Like查询需要注意的地方
    spring mvc controller间跳转 重定向 传参
    node to traverse cannot be null!
  • 原文地址:https://www.cnblogs.com/zhlan/p/11319661.html
Copyright © 2011-2022 走看看