一、用户
1、查询所有用户
SELECT User, Host, Password FROM mysql.user;
2、创建用户
# 例如:创建一个用户名为lucas,密码为123456,的用户
CREATE USER 'lucas'@'localhost' IDENTIFIED BY '123456';
提示:显示的用户密码是用password()函数加密的,上述创建的lucas密码等同于select password('123456');
。
3、删除用户
DROP USER 'username'@'host';
4、重命名用户名
rename user 'test3'@'host' to 'test1'@'host';
5、修改用户的密码
set password for '用户名'@'host' = password('密码');
二、权限
1、查看用户lucas的权限
show grants for 'lucas'@'localhost';
2、给用户赋权限
# 规范格式如下
GRANT privileges ON databasename.tablename TO 'username'@'host'
3、实例如下
# 赋予demo库lucas_log表,ALTER和SELECT操作权限
RANT ALTER,SELECT ON demo.ph_ban TO 'lucas'@'localhost';
# 赋予demo库lucas_log表,所有操作权限
RANT ALL PRIVILEGES ON demo.ph_ban TO 'lucas'@'localhost';
# 赋予ceshi库的所有表所有操作权限
GRANT ALL PRIVILEGES ON ceshi.* TO 'lucas'@'localhost';
# 赋予所有库所有表所有操作权限
GRANT ALL PRIVILEGES ON *.* TO 'lucas'@'localhost';
3、用以上命令授权的用户不能给其它用户赋权限,如果想让该用户可以授权,用以下命令,关键词是WITH GRANT OPTION
。
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
4、权限变更之后,一定记得重新加载一下权限,将权限信息从内存中写入数据库
flush privileges;
三、撤销权限
# 规范格式如下,关键词是“REVOKE”
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
四、权限命令
关键词 | 解释 |
---|---|
usage | 连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予) |
select | 必须有select的权限,才可以使用select table |
create | 必须有create的权限,才可以使用create table |
create routine | 必须具有create routine的权限,才可以使用{create ,alter,drop} {procedure,function} |
create temporary tables | 必须有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 |
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。 |
process | 通过这个权限,用户可以执行SHOW PROCESSLIST和KILL命令。默认情况下,每个用户都可以执行SHOW PROCESSLIST命令,但是只能查询本用户的进程。 |