用户管理

本文所有操作,均可通过普通 SQL 语句更新系统表 user来实现相应的功能。

新建用户

基本格式

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

注意引号的位置,不要用一对引号把@也包含进来。@前面是用户名,后面是主机名,可以使用通配符%

实际上可以省略用户名和主机名处的引号,但如果使用了通配符则引号不能省略

CREATE USER 'jelly'@'%' IDENTIFIED BY '123456';
CREATE USER jelly@127.0.0.1;
CREATE USER jelly;

删除用户

DROP USER user;
DROP USER jelly@'%';
DROP USER jelly@localhost

重命名用户

例如:

RENAME USER 'jelly'@'%' TO 'guodong'@'%';

修改密码

例如:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');

此外还可以使用 mysql 工具mysqladmin来修改
格式:mysqladmin -u用户名 -p旧密码 password 新密码

权限管理

权限范围 可用权限
表权限 Select, Insert, Update, Delete, Create, Drop, Grant, References, Index, Alter
列权限 Select, Insert, Update,References
过程权限 Execute, Alter Routine, Grant

授权

GRANT SELECT ON *.*  TO jelly@'%'
//给一个用户(jelly)分配全部的操作权限
GRANT ALL PRIVILEGES ON *.* TO jelly@'%'

%就是前面我们提到过的通配符,可以匹配 0 到 n 个字符。这里指的是该用户所登录的任何主机。

取消授权

语法:

REVOKE privilege ON databasename.tablename FROM 'username'@'host';

例如:

REVOKE SELECT ON test.user FROM 'jelly'@'%';
REVOKE ALL ON *.* FROM 'jelly'@'%';

GRANTREVOKE对于用户而言,一个是TO,一个是FROM

查看授权

例如:

SHOW GRANTS FOR 'jelly'@'%';

刷新权限

FLUSH PRIVILEGES

偶尔会出现,修改了操作系统表的权限,却没有及时更新的情况。可以用上述命令刷新。