一、Mysql权限列表
权限 | 权限级别 | 权限说明 |
create | 数据库、表或索引 | 创建数据库、表或索引权限 |
drop | 数据库或表 | 删除数据库或表权限 |
grant option | 数据库、表或保存的程序 | 赋予权限选项 |
references | 数据库或表 | 外键权限 |
alter | 表 | 更改表,比如添加字段、索引、修改字段等 |
delete | 表 | 删除数据权限 |
index | 表 | 索引权限 |
insert | 表 | 插入权限 |
select | 表 | 查询权限 |
update | 表 | 更新权限 |
create view | 视图 | 创建视图权限 |
show view | 视图 | 查看视图权限 |
alter routine | 存储过程 | 更改存储过程权限 |
create routine | 存储过程 | 创建存储过程权限 |
execute | 存储过程 | 执行存储过程权限 |
file | 服务器主机上的文件访问 | 文件访问权限 |
create temporary tables | 服务器管理 | 创建临时表权限 |
lock tables | 服务器管理 | 锁表权限 |
create user | 服务器管理 | 创建用户权限 |
proccess | 服务器管理 | 查看进程权限 |
reload | 服务器管理 | 执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限 |
replication client | 服务器管理 | 复制权限 |
replication slave | 服务器管理 | 复制权限 |
show databases | 服务器管理 | 查看数据库权限 |
shutdown | 服务器管理 | 关闭数据库权限 |
super | 服务器管理 | 执行kill线程权限 |
二、Mysql用户权限管理操作
1. 权限查询:
(1)查看mysql的所有用户及其权限:
select * from mysql.user\G; #(格式化显示)
(2)查看当前mysql用户权限:
show grants;
(3)查看某个用户的权限:
show grants for username@host; #用户名@主机
示例:
show grants for test@localhost;
(4)查看所有用户
select host,user from mysql.user;
2. Mysql用户创建:
使用create user命令创建。
create user '用户名'@'主机' identified by '密码';
示例:
create user 'yangchao'@'localhost' identified by 'yangchao'; flush privilege; #创建完用户及权限后,需要使用该命令刷新权限
3. Mysql用户删除:
drop user '用户名'@'主机';
4. Mysql用户权限授予:
刚创建的用户默认是没有权限的,需要使用grant指令进行权限的授予。
grant指令完整格式:
grant 权限列表 on 数据库名.数据表名 to ‘用户名’@’主机’ identified by ‘密码’ with grant option; #数据库名.*代表库下所有的表
示例:
grant all privileges on *.* to ‘yangchao1’@'localhost' identified by 'yangchao1' with grant option;
可使用“*”表示所有数据库或所有数据表,“%”表示任何主机地址。
如:
grant all privileges on *.* to ‘yangchao1’@'%' identified by 'yangchao1';
可以使用grant重复给用户添加权限,进行权限叠加。
with grant option:这个选项表示该用户可以将自己拥有的权限授权给别人,可以不添加
记得授权后一定要刷新权限:
flush privileges;
5. Mysql用户权限回收:
revoke指令格式:
revoke 权限列表 on 数据库名.数据表名 from 用户名@主机;
示例:
revoke drop on *.* from test@localhost;#回收drop权限
注意:
其实GRANT语句在执行的时候,如果权限表中不存在目标账号,则创建账号;如果已经存在,则执行权限的新增。
usage权限不能被回收,也就是说,REVOKE用户权限并不能删除用户。
6. 对账户重命名:
rename user '旧用户名'@'旧主机' to '新用户名'@'新主机';
示例:
rename user 'test'@'localhost' to 'test1'@'localhost';
7. Mysql用户密码修改:
方法一:使用set password命令。
set password for '用户名'@'主机' = password('新密码'); #需要执行刷新权限 flush privileges;
示例:
set password for 'yangchao'@'localhost' = password('123456');
flush privileges;
方法二:使用grant指令在授权时修改密码:
grant select on 数据库名.数据表名 to 用户名@主机 identified by '新密码' with grant option;
示例:
grant select on test.user to test@localhost identified by '111111' with grant option;
方法三:运行mysqladmin脚本文件。
该文件一般在mysql安装目录下的bin目录中。进入该目录,根据一下两种具体情况输入命令(只有root用户有这个权限)。
(1)用户尚无密码:
mysqladmin -u 用户名 password 新密码;
(2)用户已有密码:
mysqladmin -u 用户名 -p password 新密码;
(回车后会提示输入旧密码,输入之后即可修改成功。)
注意:
更改密码时候一定要使用PASSWORD函数(mysqladmin 和GRANT 两种方式不用写,会自动加上)。