MySQL权限系统

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;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值