MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化。这些权限表分别user,db,table_priv,columns_priv和host。下面分别介绍一下这些表的结构和内容:
user权限表:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。
  db权限表:记录各个帐号在各个数据库上的操作权限。
  tables_priv权限表:记录数据表级的操作权限。
  columns_priv权限表:记录数据列级的操作权限。
  host权限表:配合db权限表对给定主机上数据库级操作权限作更细致的控制。这个权限表不受GRANT和REVOKE语句的影响。
查看所有用户的信息
mysql> select user,host  from user;
查看某个用户的权限
mysql> show grants for  'user'@'hostname';
增加新用户权限
grant all privileges on *.* to 'user'@'hostname' identified by 'password'
给予某个权限
grant select  on *.* to  'user'@'hostname' identified by 'password'
grant select,insert,update  on test.* to 'user1'@'192.168.1.1'  identified by '123'
删除用户
drop user username;
mysql的各种权限
usage
连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予)
select
必须有select的权限,才可以使用select table
create routine
必须具有create routine的权限,才可以使用{create |alter|drop} {procedure|function}
当授予create routine时,自动授予EXECUTE, ALTER ROUTINE权限给它的创建者

create temporary tables(注意这里是tables,不是table)
必须有create temporary tables的权限,才可以使用create temporary tables 创建临时表

create view
必须有create view的权限,才可以使用create view 创建视图

create user
要使用CREATE USER,必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限
insert
必须有insert的权限,才可以使用insert into ….. values….
alter
必须有alter的权限,才可以使用alter table

alter routine
必须具有alter routine的权限,才可以使用{alter |drop} {procedure|function}
update
必须有update的权限,才可以使用update table
delete
必须有delete的权限,才可以使用delete from ….where….(删除表中的记录)
drop
必须有drop的权限,才可以使用drop database db_name; drop table tab_name;
drop view vi_name; drop index in_name;
show database
通过show database只能看到你拥有的某些权限的数据库,除非你拥有全局SHOW DATABASES权限。

show view
必须拥有show view权限,才能执行show create view.
index
必须拥有index权限,才能执行[create |drop] index
excute
执行存在的Functions,Procedures
lock tables
必须拥有lock tables权限,才可以使用lock tables
references
有了REFERENCES权限,用户就可以将其它表的一个字段作为某一个表的外键约束
reload
必须拥有reload权限,才可以执行flush [tables | logs | privileges]
replication client
拥有此权限可以查询master server、slave server状态.
replication slave
拥有此权限可以查看从服务器,从主服务器读取二进制日志.
Shutdown
关闭MySQL.
grant option
拥有grant option,就可以将自己拥有的权限授予其他用户(仅限于自己已经拥有的权限)
file
拥有file权限才可以执行 select ..into outfile和load data infile…操作,但是不要把file, process, super权限授予管理员以外的账号,这样存在严重的安全隐患。
super
这个权限允许用户终止任何查询;修改全局变量的SET语句;使用CHANGE MASTER,PURGE MASTER LOGS
rocess
通过这个权限,用户可以执行SHOW PROCESSLIST和KILL命令。默认情况下,每个用户都可以执行SHOW PROCESSLIST命令,但是只能查询本用户的进程。