create user 'username'@'%' identified by '#password';
username表示用户名, % 表示这个用户可以远程登录,#password是这个新用户的密码
如果要创建一个只允许本地登录的用户,sql如下:
create user 'username'@'localhost' identified by '#password';
也可以指定认证方式为mysql_native_password
create user 'username'@'localhost' identified with mysql_native_password by '#password';
如果要创建一个只允许本地登录并且密码为空的用户
create user 'username'@'localhost';
grant all privileges on database.* to 'username'@'%';
只读权限:
grant select on database.* to 'username'@'%';
指定表的只读权限
grant select on database.tablename to 'username'@'%';
读写权限
grant select,insert,update on database.* to 'username'@'%';
flush privileges;
# 查看当前用户权限
show grants;
# 查看指定用户权限
show grants for 'username'@'%';
revoke delete on *.* from 'username'@'%';
# 查看用户
select host,user,password from user;
# 删除用户
drop user 'username'@'localhost';
rename user 'username'@'%' to 'username2'@'%';
查询赋予用户的权限
show grants for username;
权限 | 权限级别 | 权限说明 |
---|---|---|
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 | 服务器管理 | 创建用户权限 |
PROCESS | 服务器管理 | 查看进程权限 |
RELOAD | 服务器管理 | 执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限 |
REPLICATION CLIENT | 服务器管理 | 复制权限 |
REPLICATION SLAVE | 服务器管理 | 复制权限 |
SHOW DATABASES | 服务器管理 | 查看数据库权限 |
SHUTDOWN | 服务器管理 | 关闭数据库权限 |
SUPER | 服务器管理 | 执行kill线程权限 |
权限分布 | 可能的设置的权限 |
---|---|
表权限 | ‘Select’, ‘Insert’, ‘Update’, ‘Delete’, ‘Create’, ‘Drop’, ‘Grant’, ‘References’, ‘Index’, ‘Alter’ |
列权限 | ‘Select’, ‘Insert’, ‘Update’, ‘References’ |
过程权限 | ‘Execute’, ‘Alter Routine’, ‘Grant’ |