http://blog.itpub.net/7607759/viewspace-675079/

2.2 授予权限

  前面提到了grant命令,grant的语法看起来可是相当复杂的呐:

GRANT

priv_type [(column_list)]

[, priv_type [(column_list)]] ...

ON [object_type] priv_level

TO user [IDENTIFIED BY [PASSWORD] 'password']

[, user [IDENTIFIED BY [PASSWORD] 'password']] ...

[REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]

[WITH with_option ...]

  加粗的几个子项说明如下:

l object_type:

TABLE

| FUNCTION

| PROCEDURE

l priv_level:

*

| *.*

| db_name.*

| db_name.tbl_name

| tbl_name

| db_name.routine_name

l ssl_option:

SSL

| X509

| CIPHER 'cipher'

| ISSUER 'issuer'

| SUBJECT 'subject'

l with_option:

GRANT OPTION

| MAX_QUERIES_PER_HOUR count

| MAX_UPDATES_PER_HOUR count

| MAX_CONNECTIONS_PER_HOUR count

      |

MAX_USER_CONNECTIONS count

  priv_type最简单,但可选项最多,官方文档中专门列了个表很清晰:

权限类型

简要说明

ALL [PRIVILEGES]

Grant all privileges at specified access level except GRANT OPTION

ALTER

Enable use of ALTER TABLE

ALTER ROUTINE

Enable stored routines to be altered or dropped

CREATE

Enable database and table creation

CREATE ROUTINE

Enable stored routine creation

CREATE TEMPORARY TABLES

Enable use of CREATE TEMPORARY TABLE

CREATE USER

Enable use of CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES

CREATE VIEW

Enable views to be created or altered

DELETE

Enable use of DELETE

DROP

Enable databases, tables, and views to be dropped

EVENT

Enable use of events for the Event Scheduler

EXECUTE

Enable the user to execute stored routines

FILE

Enable the user to cause the server to read or write files

GRANT OPTION

Enable privileges to be granted to or removed from other accounts

INDEX

Enable indexes to be created or dropped

INSERT

Enable use of INSERT

LOCK TABLES

Enable use of LOCK TABLES on tables for which you have the SELECT privilege

PROCESS

Enable the user to see all processes with SHOW PROCESSLIST

REFERENCES

Not implemented

RELOAD

Enable use of FLUSH operations

REPLICATION CLIENT

Enable the user to ask where master or slave servers are

REPLICATION SLAVE

Enable replication slaves to read binary log events from the master

SELECT

Enable use of SELECT

SHOW DATABASES

Enable SHOW DATABASES to show all databases

SHOW VIEW

Enable use of SHOW CREATE VIEW

SHUTDOWN

Enable use of mysqladmin shutdown

SUPER

Enable use of other adminstrative operations such as CHANGE MASTER TO, KILL, PURGE BINARY LOGS, SET GLOBAL, and mysqladmin debug command

TRIGGER

Enable triggers to be created or dropped

UPDATE

Enable use of UPDATE

USAGE

Synonym for “no privileges

  括弧,权限说明的英文语法很简单,俺偷个懒,就不译成中文的。

  以上几段加一块基本上就是grant语句的语法,看起来呢是复杂了一点点,不过看不懂没关系,再说就算看懂了也不一定记的住,就像现在人人都知道要先感谢国家,但是人人也都明白不过说说而已(不过百万裸官在海外的亲戚们说这话时应该是真心的),关键还是得动真格的,得会用才行,三思争取后面多弄几个例子,让大家伙都搞明白这个事儿。

提示:

    不使用grant语句,而通过insert,update方式修改字典表也是靠谱的!

  重点说一下with_option的几个选项:

  • GRANT OPTION:允许用户再将该权限授予其它用户;
  • MAX_QUERIES_PER_HOUR:允许用户每小时执行的查询语句数量;
  • MAX_UPDATES_PER_HOUR:允许用户每小时执行的更新语句数量;
  • MAX_CONNECTIONS_PER_HOUR:允许用户每小时连接的次数;
  • MAX_USER_CONNECTIONS:允许用户同时连接服务器的数量;

  这块的内容一看就是给用户设限制使的,我个人认为意义不大,不过简单了解一下也是有必要的,万一哪天对某用户看着不爽,DBA心里应该明白,还是有法子限制该用户能够使用的资源的。

  其它部分就先不多说了,何况这个事儿也不能说的太细,主要是太细的东西三思也不懂,不懂装懂这个事儿俺脸皮虽然已经很厚,但做这类事儿的时候表情总是不够自然,不过请童鞋们放心,俺一定会继续努力,争取早日成功复制那谁的成功,用俺的真诚蒙到别人,蒙到所有的人~~~

2.3 收回权限

  要收回用户权限,与之对应的命令是revoke,它的语法从定义上分为两种:

  • 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语法的子句定义与grant中同名子句定义一模一样,这里不再复述。

  如果想确定用户当前都拥有什么权限,可以使用show grants语句,例如,查看用户jss_grant@10.0.0.99都拥有哪些权限,执行语句如下:

mysql> show grants for jss_grant@10.0.0.99;

+------------------------------------------------------------------------------------------------------------------+

| Grants for jss_grant@10.0.0.99                                                                                   |

+------------------------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'jss_grant'@'10.0.0.99' IDENTIFIED BY PASSWORD '*284578888014774CC4EF4C5C292F694CEDBB5457' |

| GRANT SELECT ON `mysql`.`user` TO 'jss_grant'@'10.0.0.99'                                                        |

+------------------------------------------------------------------------------------------------------------------+

    2 rows in set (0.00 sec)

  从上述返回的结果可以看到,用户jss_grant@10.0.0.99拥有两个权限,查询mysql.user表的查询,以及登录MySQL数据库的权限。一般用户只要创建,就会拥有usage on *.*的权限,该权限无法通过revoke语句收回,切记切记。

  尝试,收回jss_grant用户对mysql.user的select权限,操作如下:

mysql> revoke select on mysql.user from jss_grant@10.0.0.99;

    Query OK, 0 rows affected (0.00 sec)

2.4 删除用户

  删除用户的语法非常简单:

    DROP USER user [, user] ...

  从语法上看与ORACLE有一点点不同,这个我感觉还是有必要提一下,比如ORACLE中的删除用户(或其它对象比如表空间),如果该用户下有别的对象,那么默认删除操作会失败,ORACLE提示需要先清理一下该用户下的对象,如果强制删除的话呢,它提供了一个CASCADE子句,附加该子句后就不再提示,即使存在关联对象也将自动将其删除。

  MySQL的删除用户语法中就不存在CASCADE的子句,为什么不存在呢,并不是MySQL对数据的保护不如ORACLE那么上心,而是由于最重要的一条与ORACLE不同的机制决定,MySQL数据库中的对象保存并不是依赖于用户,而是依赖于库(db),用户被删除没有任何关系,对象仍在,好好的保存在其所存储的数据库中,因此,MySQL数据库中的用户删了就删了,如果外部应用不使用该用户的话,那么我们可以认为该用户被删除无影响。即使发现真的删错了,该用户其实早就立志将一生奉献给镰刀斧头帮,并且作风过硬,对party和国家无限忠诚,party让咬谁就咬谁。想给它恢复身份的话也很简单,这不就是组织上一句话的事儿嘛,只要重新向mysql.user表重新插入记录(注册建档),并授予所需权限即可(授予官阶),至于底层数据的意见那是完全可以忽视的。

提示:

    DROP USER不会自动中止已连接的用户会话,也就是说被删的用户如果在删前已经连接上了服务器,并且没有尚未中断,那它此时还能继续执行一定的操作,只是,它的身份已经变成了黑户。

=======================================

MySQL数据库管理用户权限的更多相关文章

  1. mysql 操作用户权限

    使用可以对mysql数据库用户表有操作权限的用户名登陆mysqlinsert into user(Host,User,Password) values('%','name','password');如 ...

  2. 转: MySQL 赋予用户权限(grant %-远程和localhost-本地区别)

    相关参考资料: MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. gr ...

  3. mysql grant用户权限设置

    MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant sele ...

  4. MYSQL 备份用户权限

    MYSQL 备份用户权限 datadbblack 192.168.1.10 是 SELECT, RELOAD, SHOW DATABASES, LOCK TABLES  否 权限列表 1.Select ...

  5. Java基础91 mysql的用户权限设置问题

    1.概述 1)MySQL数据库中root用户具有最高的权限(超级用户),可以对任何数据库,任何表进行操作. 2)权限账户,只拥有部分权限(CRUD) .例如:只能操作某个数据库的某张表等等. 2.my ...

  6. MySQL查看用户权限的两种方法

    http://yanue.net/post-96.html MySQL查看用户权限命令的两方法: 一. 使用MySQL grants MySQL grant详细用法见:http://yanue.net ...

  7. mysql grant 用户权限说明

    mysql grant 用户权限说明 Mysql 有多个个权限?经常记不住,今天总结一下,看后都能牢牢的记在心里啦!! 很明显总共28个权限:下面是具体的权限介绍:转载的,记录一下: 一.权限表 my ...

  8. mysql 的用户权限

    查看MySQL的用户权限 show grants for "username"@'host'; 添加新用户 允许本地IP访问localhost:127.0.0.1 use mysq ...

  9. MySQL 赋予用户权限(grant %-远程和localhost-本地区别)

    不过有些时候(有些版本)'%'不包括localhost,要单独对@'localhost'进行赋值,这事真让我遇上了,在对mysql5.1.32建立远程用户时. 分别对'%'和'localhost'授权 ...

随机推荐

  1. iOS,iPhone各机型设备号,屏幕宽高,屏幕模式

    //获取设备型号 NSString *DeviceModel= [[UIDevice currentDevice] model]; //获取设备系统版本号 NSString *DeviceIOSVer ...

  2. JQuery 支持 hide 和 show 事件的方法与分析

    问题提出  JQuery不支持hide和show作为事件形式出现, 实际上这两个仅仅是JQuery对象的一个方法(fn): 有一类UI交互需求,根据一个DOM对象的或者显示对附属的DOM对象做相同操作 ...

  3. 以一则LUA实例说明敏捷开发中“分离构造和使用”原则

    分离构造和使用 构造含义是功能的实现, 此功能是一个定义明确的处理过程, 开放出明确的接口给调用者使用. 则使用者可以直接调用接口进行使用, 但是使用者需要搞清楚, 那些是构造, 那些是使用. 不要再 ...

  4. raw socket

    一个很newbee的例子,可惜还得改 import sys import time import socket import struct import random def SendPacketDa ...

  5. How to use PEM of PPAS

    -bash-4.1$ pwd/opt/PostgresPlus/9.3AS/client-v4/scripts -bash-4.1$ lsclient launchPEMClient.sh -bash ...

  6. Winform 进程、线程、treeview

    进程:一个程序就是一个进程,但是也有一个程序需要多个进程来支持的情况 进程要使用的类是:Process它在命名空间:System.Diagnostics; 静态方法Start();也可以实例化对象,来 ...

  7. Redis linux 下安装 及扩展配置

    1.首先在/usr/local/ 创建文件夹 reids Cd /usr/local/ mkdir redis 2.把redis安装包放在redis目录下面进行解压phpredis-2.2.4.tar ...

  8. winform下的智能提示框

    winform下的智能提示框 最近在搞winform的程序,接触到有些可能以后还会用到的功能,所以写到博客园里去,第一可以加深自己的印象,第二可以在以后再遇到同样问题的时候忘记了可以马上回来看看,第三 ...

  9. Qt报表控件NCReport教程:添加报表字段

    NCReport是一款轻量级.快速.多平台.简单易用的基于Qt toolkit的C++编写的报表解决方案,目前主要包括报表渲染库和报表设计器GUI应用程序. 在前面的文章<报表控件NCRepor ...

  10. css3 calc()方法详解

    calc()对大家来说,或许很陌生,不太会相信calc()是css中的部分.因为看其外表像个函数,既然是函数为何又出现在CSS中呢?这一点也让我百思不得其解,今天有一同事告诉我,说CSS3中有一个属性 ...