MySQL数据库管理用户权限

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

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

 

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



本文转自茄子_2008博客园博客,原文链接:http://www.cnblogs.com/xd502djj/p/6004892.html,如需转载请自行联系原作者。



相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
MySQL| 数据库的管理和操作【操作数据库和操作表】【附练习】
MySQL | 数据库的基本操作和表的基本操作【附练习】
|
1月前
|
弹性计算 关系型数据库 MySQL
快速上手阿里云RDS MySQL实例创建,轻松管理数据库
快速上手阿里云RDS MySQL实例创建,轻松管理数据库 在数字化时代,数据已成为企业的核心资产。如何高效、安全地存储和管理这些数据,成为企业在云计算时代亟待解决的问题。阿里云的RDS(关系型数据库服务)应运而生,为用户提供稳定、可靠的云上数据库解决方案。本文将详细介绍如何通过阿里云RDS管理控制台快速创建RDS MySQL实例,让您轻松上手,快速部署数据库。
159 2
|
1月前
|
SQL 关系型数据库 MySQL
Mycat【Mycat部署安装(核心配置及目录结构、安装以及管理命令详解)Mycat高级特性(读写分离概述、搭建读写分离、MySQL双主双从原理)】(三)-全面详解(学习总结---从入门到深化)
Mycat【Mycat部署安装(核心配置及目录结构、安装以及管理命令详解)Mycat高级特性(读写分离概述、搭建读写分离、MySQL双主双从原理)】(三)-全面详解(学习总结---从入门到深化)
35 0
|
1月前
|
SQL 关系型数据库 MySQL
MySQL | 数据库的管理和操作【表的增删改查】(一)
MySQL | 数据库的管理和操作【表的增删改查】
|
27天前
|
关系型数据库 MySQL 数据库
深入理解MySQL:从基础到高级数据库管理
深入理解MySQL:从基础到高级数据库管理
42 0
|
1月前
|
SQL 关系型数据库 MySQL
MySQL | 数据库的管理和操作【表的增删改查】(二)
MySQL | 数据库的管理和操作【表的增删改查】(二)
|
27天前
|
关系型数据库 MySQL 数据库
深入了解MySQL数据库管理与应用
深入了解MySQL数据库管理与应用
101 0
|
18天前
|
关系型数据库 MySQL 数据库
MySQL技能完整学习列表9、用户管理和权限控制——1、创建和管理用户——2、权限授予和撤销
MySQL技能完整学习列表9、用户管理和权限控制——1、创建和管理用户——2、权限授予和撤销
30 0
|
18天前
|
SQL 存储 关系型数据库
MySQL技能完整学习列表8、触发器、视图和事务——1、触发器(Triggers)的使用——2、视图(Views)的创建和使用——3、事务(Transactions)的管理
MySQL技能完整学习列表8、触发器、视图和事务——1、触发器(Triggers)的使用——2、视图(Views)的创建和使用——3、事务(Transactions)的管理
24 0
|
18天前
|
关系型数据库 MySQL 数据库
MySQL技能完整学习列表——1、数据库基础概念——2、数据库管理系统(DBMS)——3、数据模型(Data Model)
MySQL技能完整学习列表——1、数据库基础概念——2、数据库管理系统(DBMS)——3、数据模型(Data Model)
14 0