MySQL学习笔记之二十一 用户的权限

来源:互联网 发布:python 转置 优先级 编辑:程序博客网 时间:2024/05/14 15:17

    一、数据库和表的权限

    下列权限运用于数据库和表上的操作。

    SELECT

    允许你使用SELECT语句从表中检索数据。SELECT语句只有在他们真正从一个表中检索行是才需要select权限,你可以执行某个SELECT语句,甚至没有任何到服务器上的数据

库里的存取任何东西的许可。例如,你可使用mysql客户作为一个简单的计算器:

    mysql> SELECT 1+1;

    mysql> SELECT PI()*2;

    UPDATE

    允许你修改表中的已有的记录。 

    INSERT

    允许在表中插入记录。

    DELETE

    允许你从表中删除现有记录。

    ALTER

    允许你使用ALTER TABLE语句,这其实是一个简单的第一级权限,你必须由其他权限,这看你想对数据库实施什么操作。

    CREATE

    允许你创建数据库和表,但不允许创建索引。

    DROP

    允许你删除(抛弃)数据库和表,但不允许删除索引。

    注意:如果你将mysql数据库的drop权限授予一个用户,该用户能抛弃存储了MySQL存取权限的数据库!

    INDEX

    允许你创建并删除索引。

    REFERENCES

    目前不用。

    二、管理权限

    下列权限运用于控制服务器或用户授权能力的操作的管理性操作。

    FILE

    允许你告诉服务器读或写服务器主机上的文件。该权限不应该随便授予,它很危险,见“回避授权表风险”。服务器确实较谨慎地保持在一定范围内使用该权限。你只能读

任何人都能读的文件。你正在写的文件必须不是现存的文件,这防止你迫使服务器重写重要文件,如/etc/passwd或属于别人的数据库的数据目录。

    如果你授权FILE权限,确保你不以UNIX的root用户运行服务器,因为root可在文件系统的任何地方创建新文件。如果你以一个非特权用户运行服务器,服务器只能在给用户

能访问的目录中创建文件。

    GRANT

    允许你将你自己的权限授予别人,包括GRANT。

    PROCESS

    允许你通过使用SHOW PROCESS语句或mysqladmin process命令查看服务器内正在运行的线程(进程)的信息。这个权限也允许你用KILL语句或mysqladmin kill命令杀死线

程。你总是能看到或杀死你自己的线程。PROCESS权限赋予你对任何线程做这些事情的能力。

    RELOAD

    允许你执行大量的服务器管理操作。你可以发出FLUSH语句,你也能指性mysqladmin的reload、refresh、flush-hosts、flush-logs、flush-privileges和flush-tables等

命令。

    SHUTDOWN

    允许你用mysqladmin shutdown关闭服务器。

    在user、db和host表中,每一个权限以一个单独的列指定。这些列全部声明为一个ENUM("N","Y")类型,所以每个权的缺省值是“N”。在tables_priv和columns_priv中的

权限以一个SET表示,它允许权限用一个单个列以任何组合指定。这两个表比其他三个表更新,这就是为什么它们使用更有效的表示方式的原因。(有可能在未来,user、db和

host表也用一个SET类型表示。)

0 0