mysql fulsh_MYSQL教程:MySQL用户帐号管理

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

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、付费专栏及课程。

余额充值