您的位置:首页 > 数据库 > MySQL

MySQL权限系统

2017-04-03 16:36 274 查看

MySQL权限系统

1 登陆到MySQL

首先进入到机器的命令行界面并输入以下命令:

mysql -h hostname -u username -p


-h命令用于指定所希望连接的主机,即允许MySQL服务器的机器。如果是本机,可省略该命令和hostname参数。

-u命令用于指定连接数据库时使用的用户的名称。默认值是登录该操作系统的用户名。

-p命令指定连接密码。

2 创建数据库

创建数据库

在MySQL命令提示符下,输入如下命令:

mysql> create database dbname;


用所希望的数据库名代替“dbname”。

3 MySQL权限系统

3.1 最少权限原则

一个用户或一个进程应该拥有能够执行分配给他的任务的最低级别的权限。

3.2 GRANT命令

GRANT和REVOKE命令分别用来授予和取消MySQL用户的权限。这些权限分4个级别,分别是:

- 全局

- 数据库

- 表

- 列

GRANT命令可以用来创建用户并赋予权限。GRANT命令常见形式:

GRANT privileges [columns]
ON item
TO user_name [IDENTIFIED BY 'password']
[REQUIRE ssl_options]
[WITH [GRANT OPTION | LIMIT OPTION]]


方括号内的句子是可选的。

privileges是由逗号分开的一组权限。

columns是可选的。可以用它对每一个列指定权限(多列名称逗号隔开)。

item是所应用于的数据库或表。将其指定我*.*,而将权限应用于所有的数据库,这叫做赋予全局权限。也可以通过*完成赋予全局权限。也可以以dbname.*的形式指定数据库中所有的表,以dbname.tablename的形式指定单个表。或者通过tablename来指定特定的列。

REQUIRE子句指定用户是否必须通过加密套接字连接,或者其他SSL选项。

WITH GRANT OPTION表示允许指定的用户向别人授予自己所拥有的权限。也可以使用如下的WITH子句:

MAX_QUERIES_PER_HOUR n

或者

MAX_UPDATES_PER_HOUR n

或者

MAX_CONNECTIONS_PER_HOUR n

这些句子可以指定每一个用户每小时进行的查询、更新和连接的数量。

3.3 REVOKE命令

REVOKE命令用来从一个用户收回权限,语法上与GRANT相似:

REVOKE privileges [columns]
ON item
FROM user_name


如果已经给出WITH GRANT OPTION子句,可以这样撤销它:

REVOKE ALL PRIVILEGES, GRANT
FROM user_name


3.4 权限的类型和级别

MySQL中存在3种基本类型的权限:一般用户的权限、管理员的权限和几个特定的权限。

我们应该只赋予用户访问他们必须使用的数据库和表的权限,而不应该将访问mysql的权限赋予不是管理员的用户。

一般用户的权限

权限应用于描述
SELECT表,列允许用户从表种选择行(记录)
INSERT表,列允许用户在表中插入新行
UPDATE表,列允许用户修改存表里行中的值
DELETE允许用户删除现存表的行
INDEX允许用户创建和拖动特定表索引
ALTER允许用户修改现存表的结构,例如,可添加列、重命名列或表、修改列的数据类型
CREATE数据库,表允许用户创建新的数据库和表。如果在GRANT中指定了一个特定的数据库或表,他们只能创建该数据库或表,即他们首先必须删除(drop)它
DROP数据库,表允许用户拖动(删除)数据库或表
管理员的权限

权限描述
CREATE TEMPORARY TABLES允许管理员在CREATE TABLE语句中使用TEMPORARY关键字
FILE允许将数据从文件读入表,或从表读入文件
LOCK TABLES允许使用LOCK TABLES语句
PROCESS允许管理员查看属于所有用户的服务器进程
RELOAD允许管理员重新载入授权表、清空授权、主机、日志和表格
REPLICATION CLIENT允许在复制主机(Master)和从机(Slave)上使用SHOW STATUS
REPLICATION SLAVE允许复制从服务器连接到主服务器
SHOW DATABASES允许查看所有的数据库和表,如果没有这个权限,只能查看所能看到的数据库和表
SHUTDOWN允许管理员关闭服务器
SUPER允许管理员关闭属于任何用户的线程
特别的权限

权限描述
ALL授予上述两个表中的所有权限,也可以写出ALL PRIVILEGES
USAGE不授予权限。通常在之后授予相关权限

3.5 使用GRANT和REVOKE的示例

要创建一个管理员,可以输入:

GRANT ALL
ON *
TO tom IDENTIFIED BY 'tom123'
WITH GRANT OPTION;


以上命令授予用户名为tom、密码为tom123的用户使用所有数据库的所有权限,并允许他向其他人授予这些权限。

可以这样撤销他的权限:

REVOKE ALL PRIVILEGES, GRANT
FROM tom;


现在,可以创建一个没有任何权限的新用户:

GRANT USAGE
ON books.*
TO tom IDENTIFIED BY 'tom123';


之后呢,我们又想给tom一些权限,可以这样:

GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE, DROP
ON books.*
TO tom;


这时候就不需要指定tom的密码了。

我们也可以减少tom的一些权限:

REVOKE alter, create, drop
on books.*
FROM tom;


当他不再需要使用数据库时,可以这样撤销他所有的权限:

REVOKE ALL
on books.*
FROM tom;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql GRANT REVOKE