码迷,mamicode.com
首页 > 数据库 > 详细

MySQL用户管理

时间:2016-12-18 18:50:46      阅读:347      评论:0      收藏:0      [点我收藏+]

标签:mysql授权   grant   mysql用户管理   



MySQL的用户管理


用户账号格式

username@hostname


查看帮助

MySQL > help contents;
MySQL > help account management;


技术分享


技术分享


账号管理命令(此时权限很有限)

create user
drop user
rename user
set password


权限管理命令:

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‘


技术分享


技术分享


技术分享


重命名

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‘;


为用户设置密码

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


MySQL的权限类型:

       库级别

       表级别

       字段级别

       管理类

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


    管理类权限

         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库


技术分享


查看自己的权限
MySQL > show grants for testuser@‘192.168.139.1__‘;


技术分享


技术分享


此时可以在该数据库下创建表,但是由于没有select和drop权限,

所以不能查看表数据及结构,不能删除表


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

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


技术分享


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

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


技术分享


注意:要想创建库应该对所有表都有权限



收回授权

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__‘;

  

技术分享



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

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


MySQL的每一次操作几乎都要涉及权限管理检查,所以把授权表载入内存中(为了提升速度)




本文出自 “似水流年” 博客,请务必保留此出处http://sixijie123.blog.51cto.com/11880770/1883685

MySQL用户管理

标签:mysql授权   grant   mysql用户管理   

原文地址:http://sixijie123.blog.51cto.com/11880770/1883685

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!