MySQL8创建、删除用户和授权、消权
1. 创建用户
create user '用户名'@'允许访问的IP地址,多个IP地址使用逗号区分或者配置%允许所有IP地址' identified by '设置的密码';
其中%指任意ip都能连接,可以将其localhost指本地才可连接,也可以指定ip连接
2. 刷新权限
flush privileges;
3. 修改密码
alter user '用户名'@'允许访问的IP地址,多个IP地址使用逗号区分或者配置%允许所有IP地址' identified by '新密码';
flush privileges; 记得刷新
4. 授权
grant all privileges on *.* to '用户名'@'允许访问的IP地址,多个IP地址使用逗号区分或者配置%允许所有IP地址' with grant option;
with gran option:表示该用户可给其它用户赋予权限,但不可能超过该用户已有的权限。
授权用户有select,insert权限,也可给其它用户赋权,但它不可能给其它用户赋delete权限。
(with gran option 这句话可以不加,请视个人情况而定)
示例如下:
授予管理员权限
grant all privileges on *.* to '用户名'@'允许访问的IP地址,多个IP地址使用逗号区分或者配置%允许所有IP地址' IDENTIFIED BY 'mypassword' with grant option;
授予用户部分权限
grant select,insert,update,delete on *.* to '用户名'@'允许访问的IP地址,多个IP地址使用逗号区分或者配置%允许所有IP地址';
授予用户只读权限
grant select on *.* to '用户名'@'允许访问的IP地址,多个IP地址使用逗号区分或者配置%允许所有IP地址' IDENTIFIED BY 'your_password';
第一个*表示通配数据库,可指定新建用户只可操作的数据库
grant all privileges on 数据库.* to '用户名'@'允许访问的IP地址,多个IP地址使用逗号区分或者配置%允许所有IP地址';
第二个*表示通配表,可指定新建用户只可操作的数据库下的某个表
grant all privileges on 数据库.指定表名 to '用户名'@'允许访问的IP地址,多个IP地址使用逗号区分或者配置%允许所有IP地址';
all privileges 可换成select,update,insert,delete,drop,create等
(详见本文第9段)
5. 查看用户授权信息
show grants for '用户名'@'允许访问的IP地址,多个IP地址使用逗号区分或者配置%允许所有IP地址';
6. 撤销权限
revoke all privileges on *.* from '用户名'@'允许访问的IP地址,多个IP地址使用逗号区分或者配置%允许所有IP地址';
用户有什么权限就撤什么权限,例:all privileges
7. 删除用户
drop user '用户名'@'允许访问的IP地址,多个IP地址使用逗号区分或者配置%允许所有IP地址';
8. grant授权、改权
当一个用户设置的权限过大,除了使用revoke回收部分权限外,还可以使用grant进行权限修改
就是对同一’用户名’@'ip’设置权限,以覆盖之前的权限,grant修改后的权限将覆盖之前的权限!
grant授权设置明文密码
grant 权限列表 on 库.表.* to 用户名@'ip' identified by "明文密码"
grant授权设置密文密码
grant 权限列表 on 库.表.* to 用户名@'ip' identified by password "密文密码"
grant重置权限的时候可以用查看的密文密码当做新的密码,然后去覆盖之前的权限,这就保证了修改前后的密码一致!
9. 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线程权限 |
10. 本地数据库允许局域网内访问
配置防火墙入站规则,开发特定端口3306
具体操作可自行查询,本文不在赘述
11. 授权全流程
drop user '用户名'@'允许访问的IP地址,多个IP地址使用逗号区分或者配置%允许所有IP地址';
flush privileges;
create user '用户名'@'允许访问的IP地址,多个IP地址使用逗号区分或者配置%允许所有IP地址' identified by '设置的密码';
flush privileges;
GRANT all privileges ON `数据库名称`.* TO '用户名'@'允许访问的IP地址,多个IP地址使用逗号区分或者配置%允许所有IP地址';
flush privileges;
show grants for '用户名'@'允许访问的IP地址,多个IP地址使用逗号区分或者配置%允许所有IP地址';