MySQL用户管理



MySQL的用户管理mysql


用户帐号格式sql

username@hostname


查看帮助数据库

MySQL > help contents;
MySQL > help account management;


wKiom1hV1w7hVEq3AAAlPfMOAJw298.png-wh_50


wKioL1hV1z6jGNelAAAdlewVFPw185.png-wh_50


帐号管理命令(此时权限颇有限)
bash

create user
drop user
rename user
set password


权限管理命令:ide

grant
revoke


查看建立用户命令帮助函数

MySQL> help create user;
  CREATE USER username@hostname
    [
        IDENTIFIED BY [PASSWORD] 'password'
    ]

主机也能够使用通配符:testuser@'172.16.100.1__'(172.16.100.100-172.16.100.199) 
                                       (两个下划线)
还能够使用%:testuser@'172.16.%.%'                                      
查看用户可以使用的权限:show grants for username@'hostname'


wKiom1hV2M2CeWcYAAA0G0maiyM571.png-wh_50


wKioL1hV2M7SRYKuAAGqb2JmUqA872.png-wh_50


wKioL1hV2M6QFXuvAAAoW6lEeww615.png-wh_50


重命名 加密

MySQL > help rename user
  RENAME USER old_user TO new_user
    [, old_user TO new_user] ...
  mysql > RENAME USER 'jeffrey'@'localhost' TO 'jeff'@'127.0.0.1';


为用户设置密码spa

MySQL > help set password;
  SET PASSWORD [FOR user] =
    {
        PASSWORD('cleartext password')
    }
MySQL > set password for testuser@'172.16.%.%' = password('123456'); 调用password函数


MySQL的权限类型:线程

       库级别3d

       表级别

       字段级别

       管理类

       程序类(存储过程,触发器,存储函数,时间调度器)


    管理类权限

         create temporary tables 临时表

         create user

         file 容许用户读或者写某些文件

         lock tables 添加显式锁

         process:查看用户的线程

         reload:至关于执行flush和reset

         replication client 查询有哪些复制客户端

         replication slave 赋予用户复制权限

         show databases

         shutdown

         super


    数据库访问权限(库级别和表级别)

         alter:modify tables with alter tables

         alter routine 修改存储历程

         create

         create routine 存储过程,存储函数

         create view

         delete

         drop

         execute 是否可以执行存储过程,或存储函数

         grant option 将本身的权限复制给别的用户

         index 索引

         show view


    数据操做类权限(表级别)

        select

        insert

        update

        delete


    字段级别

       select(col1,....)

       update(col1,....)

       insert(col1,....)

    

   全部权限

       ALL [privileges]


查看帮助

MySQL > help GRANT
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    TO user_specification [, user_specification] ...
    [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
    [WITH with_option ...]
object_type:(默认为表)
    TABLE
  | FUNCTION
  | PROCEDURE
priv_level:
    *
  | *.*
  | db_name.*
  | db_name.tbl_name
  | tbl_name
  | db_name.routine_name
user_specification:
    user
    [
        IDENTIFIED BY [PASSWORD] 'password'
      | IDENTIFIED WITH auth_plugin [AS 'auth_string']
    ] //能够实现受权并添加密码
ssl_option:
    SSL
    ...
with_option:
    GRANT OPTION 转赠给别人
  | MAX_QUERIES_PER_HOUR count 每小时容许执行的最大查询次数
  | MAX_UPDATES_PER_HOUR count 每小时容许执行的最大更新次数
  | MAX_CONNECTIONS_PER_HOUR count 每小时容许执行的最大链接次数
  | MAX_USER_CONNECTIONS count 使用同一个帐号能够同时链接的次数


实例

给testuser用户受权
MySQL > grant create on testdb.* to testuser@'192.168.139.1__';


此时testuser只能建立testdb库


wKiom1hV2rHwU59BAAAYyfMaH5M457.png-wh_50


查看本身的权限
MySQL > show grants for testuser@'192.168.139.1__';


wKioL1hV2vuhKIFeAAIGDH35G9k426.png-wh_50


wKiom1hV2vuxavQyAAAYvUxIztk712.png-wh_50


此时能够在该数据库下建立表,可是因为没有select和drop权限,

因此不能查看表数据及结构,不能删除表


给testuser用户删除表的权限
MySQL > grant drop  on testdb.* to testuser@'192.168.139.1__';

查看权限
MySQL > show grants for testuser@'192.168.139.1__';


wKiom1hV24myxeMQAAEvZnqSJHs308.png-wh_50


给testuser用户增、删、查、改权限
MySQL > grant select,insert,update,delete  on testdb.* to testuser@'192.168.139.1__';

查看权限
MySQL > show grants for testuser@'192.168.139.1__';


wKioL1hV272BC7b7AAFDPo3axW0675.png-wh_50


注意:要想建立库应该对全部表都有权限



收回受权

MySQL > help REVOKE
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    FROM user [, user] ...
    REVOKE ALL PRIVILEGES, GRANT OPTION
    FROM user [, user] ...
    REVOKE PROXY ON user
    FROM user [, user] ...


例子:

MySQL > revoke insert,select on testdb.* from testuser@'192.168.139.1__';

查看权限
MySQL > show grants for testuser@'192.168.139.1__';

  

wKioL1hV3CuSEGbGAAFj5gP_7-s413.png-wh_50



几个跟用户受权相关的表:(在mysql库中)

db:库级别的权限
host:主机级别权限,已废弃
tables_priv:表级别权限
columns_priv:列级别的权限
procs_priv:存储过程和存储函数相关的权限
proxies_priv:代理用户权限·


MySQL的每一次操做几乎都要涉及权限管理检查,因此把受权表载入内存中(为了提高速度)

相关文章
相关标签/搜索