Maison >base de données >tutoriel mysql >MySQL学习笔记之二十一 用户的权限_MySQL
一、数据库和表的权限
下列权限运用于数据库和表上的操作。
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类型表示。)