一、用户

1、查询所有用户

SELECT User, Host, Password FROM mysql.user;

6c2f0acb0f5c4ba2f5c1be1b5c06d8.png

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命令,但是只能查询本用户的进程。
最后修改:2024 年 11 月 19 日
如果觉得我的文章对你有用,请随意赞赏