SQL用户权限语句操作

SQL用户权限语句操作
    
    用户创建
    第一种:
    CREATE USER case_dev identified BY 'pass123';  //密码默认为MD5加密,明文的密码不能使用
    第二种:
    mysql> insert into User(Host,User,Password)
    -> value ('::1','xuanling',password('19990608')); //password('19990608')使密码为MD5密文,明文的密码不能使用
    Query OK, 1 row affected, 3 warnings (0.00 sec)

    删除用户
    drop user xuanling;
    或 删除mysql.user表中user列含有'xuanling'的行
授权语句
     FLUSH PRIVILEGES;//刷新权限

     如果使用的是上面第二种用户创建方式,则会出现以下问题
     mysql> grant select on table sql1.class  to xuanling;
     ERROR 1133 (42000): Can't find any matching row in the user table
     原因:mysql没有检测到密码,无法识别用户,
     解决方法如下,(identified by '19990608')仅需要使用一次,之后系统会会自动匹配密码(即使换了密码也不用再写一次)
     mysql> grant select on table class  to xuanling identified by '19990608';
     Query OK, 0 rows affected (0.00 sec)

     给用户所有的权限
     mysql> grant all/(all privileges) on table student  to xuanling;
     Query OK, 0 rows affected (0.00 sec)

     将权限赋给xuanling 并允许它将此权限赋予其他用户
     mysql> grant update on table student  to xuanling with grant option;
     Query OK, 0 rows affected (0.00 sec)

     创建public用户并授予权限
     mysql> grant all privileges on table student to public identified by 'aa';
     Query OK, 0 rows affected (0.00 sec)

收回权限

    mysql> revoke select on table class from xuanling;
    Query OK, 0 rows affected (0.00 sec)
    收回用户xuanling对表student的所有权限
    mysql> revoke all/(all privileges) on table student from xuanling;
    Query OK, 0 rows affected (0.00 sec)

查看权限
    全局层级
    全局权限适用于一个给定服务器中的所有数据库。这些权限存储在mysql.user表中。

    数据库层级
    数据库权限适用于一个给定数据库中的所有目标。这些权限存储在mysql.db和mysql.host表中。

    表层级
    表权限适用于一个给定表中的所有列。这些权限存储在mysql.tables_priv表中。
 

    列层级    
    列权限适用于一个给定表中的单一列。这些权限存储在mysql.columns_priv表中

    子程序层级
    CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。而且,除了CREATE
    ROUTINE外,这些权限可以被授予为子程序层级,并存储在mysql.procs_priv表中。

 

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