MYSQL教程:MySQL用户帐号管理

MySQL grant 语法的详细解析

上面的解析已经很详细了,但是还有中情况,一个用户对应多个数据库的情况:

 

 

grant all on `数据库名%`.* to '用户名'@'IP'  identified by '密码'

 

mysql支持通配符 当把带引号的值是,需使用反勾号(‘`’)为数据库、表、列和子程序名称加引号。使用单引号(‘'’)为hostnames、usernames和 密码加引号 .在数据库名一项可以使用%来选择一类数据库,还可以使用“_”

 

 

MySQL用户帐号管理主要用grant(授权)和revoke(撤权)两个SQL指令来管理。这两个指令实质是通过操作user(连接权限和全局 权限)、db(数据库级权限)、tables_priv(数据表级权限)、columns_priv(数据列级权限)四个权限表来分配权限的。host权 限表不受这两个指令影响。下面将会详细介绍用户权限管理的内容。

本文由网页教学网(http://www.webjx.com )整理发布!转载请注明出处,谢谢!

  • GRANT语法说明:

    GRANT privileges (columns)          #privileges表示授予的权限,columns表示作用的列(可选) 
          ON what                       #设置权限级别,全局级、数据库级、数据表级和数据列级
          TO account                    #权限授予的用户,用"user_name"@"host_name"这种用户名、主机名格式
          IDENTIFIED BY 'password'      #设置用户帐号密码
          REQUIRE encryption requirements       #设置经由SSL连接帐号
          WITH grant or resource management options;   #设置帐号的管理和资源(连接服务器次数或查询次数等)选项
    

    示例:

    mysql>grant all on db.* to 'test'@'localhost' identified by 'test';
    上例运行后的效果是,test用户只能通过‘test’密码从本机访问db数据库
    
    mysql>grant all on db.* to 'test'@'%' identified by 'test';
    上例运行后的效果是,test用户可通过‘test’密码从任意计算机上访问db数据库。‘%’代表任意字符,‘_’代表一个任意字符。主机名部份还可以是IP地址。
    
    如果没有给定主机部份,则默认为任意主机,也就是'test'和'test'@'%'是等价的。
  • Table 4.1. 访问权限表

    权限权限说明
    CREATE TEMPORARY TABLES创建临时数据表
    EXECUTE执行存储过程(暂不支持)
    FILE操作系统文件
    GRANT OPTION可把本帐号的权限授予其它用户
    LOCK TABLES锁定指定数据表
    PROCESS查看运行着的线程信息
    RELOAD重新加载权限表或刷新日志及缓冲区
    REPLICATION CLIENT可查询主/从服务器主机名
    REPLICATION SLAVE运行一个镜像从服务器
    SHOW DATABASES可运行SHOW DATABASES指令
    SHUTDOWN关闭数据库服务器
    SUPER可用kill终止线程以及进行超级用户操作
    ALTER可修改表和索引的结构
    CREATE创建数据库和数据表
    DELETE删除数据表中的数据行
    DROP删除数据表和数据行
    INDEX建立或删除索引
    INSERT插入数据行
    REFERENCES(暂时不支持)
    SELECT查询数据行
    UPDATE更新数据行
    ALL所有权限,但不包括GRANT。
    USAGE无权限权限
  • Table 4.2. 权限作用范围(由ON子句设置)

    权限限定符作用范围
    ON *.*全局级权限,作用于所有数据库
    ON *全局级权限,若未指定默认数据库,其作用范围是所有数据库,否则,其作用范围是当前数据库
    ON db_name.*数据库级权限,作用于指定数据库里的所有数据表
    ON db_name.tbl_name数据表级权限,作用于数据表里的所有数据列
    ON tbl_name数据表级权限,作用于默认数据库中指定的数据表里的所有数据列
  • USAGE权限的用法:修改与权限无关的帐户项,如:

    mysql>GRANT USAGE ON *.* TO account IDENTIFIED BY 'new_password';     #修改密码
    mysql>GRANT USAGE ON *.* TO account REQUIRE SSL;                      #启用SSL连接
    mysql>GRANT USAGE ON *.* TO account WITH MAX_CONNECTIONS_PER_HOUR 10; #设置资源 
    
  • 拥有WITH GRANT OPTION权限的用户可把自已所拥用的权限转授给其他用户,如:

    mysql>GRANT ALL ON db.* TO 'test'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
    这样test用户就有权把该权限授予其他用户。
    
  • 限制资源使用,如:

    mysql>GRANT ALL ON db.* TO account IDENTIFIED BY 'password' WITH MAX_CONNECTIONS_PER_HOUR 10 MAX_QUERIES_PER_HOUR 200 MAX_UPDATES_PER_HOUR 50;
    允许account用户每小时最多连接20次服务器,每小时最多发出200条查询命令(其中更新命令最多为50条)
    

    默认都是零值,即没有限制。FLUSH USER_RESOURCES和FLUSH PRIVILEGES可对资源限制计数器清零。

  • REVOKE语法说明:

    mysql>REVOKE privileges (columns) ON what FROM account;
    

    示例:

    mysql>REVOKE SELECT ON db.* FROM 'test'@'localhost';
    删除test帐号从本机查询db数据库的权限
    

    REVOKE可删除权限,但不能删除帐号,即使帐号已没有任何权限。所以user数据表里还会有该帐号的记录,要彻底删除帐号,需用DELETE命令删除user数据表的记录,如:

    % mysql -u root -p
    mysql>use mysql
    mysql>DELETE FROM user where User='test' and Host='localhost';
    mysql fulsh privileges;
    

    REVOKE不能删除REQUIRE和资源占用的配置。他们是要用GRANT来删除的,如:

    GRANT USAGE ON *.* TO account REQUIRE NONE;      #删除account帐号的SSL连接选项
    GRANT USAGE ON *.* TO account WITH MAX_CONNECTIONS_PER_HOUR 0 MAX_QUERIES_PER_HOUR 0 M
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值