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地址';
本人水平有限,还在不断学习中,难免有很多错误或者遗漏,望见谅!