欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【mysql基础系列十一】用户权限管理

程序员文章站 2022-05-01 12:26:45
...

用户权限管理:在不同的项目中给不同的角色(mysql客户端用户,通常为开发者)不同的权限,为了保证数据库的数据安全。

用户管理

mysql需要客户端进行连接认证才能进行服务器操作:需要用户信息。mysql中所有的用户(指mysql客户端用户)信息都是保存在mysql数据库下的user表中。该表采用复合主键(host + user)。

【mysql基础系列十一】用户权限管理【mysql基础系列十一】用户权限管理

注意:\g 的作用是分号和在sql语句中写’;’是等效的 
            \G 的作用是将查到的结构旋转90度变成纵向

1、创建用户

方式一:直接使用root用户在user表中插入记录。(不推荐)

方式二:使用SQL指令创建用户

create user '用户名'@'主机地址' identitied by '明文密码';
create user 用户名;  //创建 谁都可以访问,不需要密码 的用户

【mysql基础系列十一】用户权限管理

注意:主机地址可以使用'%'或者''代替,表示无限制。

2、删除用户

drop user '用户名'@'主机地址';
drop user 用户名; //删除主机地址为'' 或者 '%' 的用户

3、修改用户密码

mysql中提供了多种修改密码的方式,基本上都必须使用对应提供的一个系统函数:password()。需要靠该函数对密码进行加密处理。

方式一:使用专门的SQL指令来修改密码

set password for 用户名 = password('新的明文密码');

方式二:使用更新语句update来修改表

update mysql.user set password = password('新的明文密码') where user = '用户名' and host='主机地址';

权限管理

1、权限分类

mysql中将权限分3类:数据权限、结构权限、管理权限

数据权限:增删改查(select/update/delete/insert)

结构权限:结构操作(create/drop)

管理权限:用户操作权限(create user/grant/revoke)

2、grant:授予权限

将权限分配给指定用户

grant 权限列表/all privileges on 数据库.表名 to 用户;

【mysql基础系列十一】用户权限管理

注:1、权限列表:使用逗号分隔,但是可以使用 all privileges(表示全部权限)。

       2、数据库.表名:可以是单表(数据库名.表名)、可以是某个数据库(数据库名.*)、可以是整库(*.*)

3、revoke:权限回收

revoke 权限列表/all privileges on 数据库.表名 from 用户;

4、flush:刷新权限

将当前对用户的权限操作,进行一个刷新,将操作的具体内容同步到对应的表中。

flush privileges;

密码丢失解决方案

普通用户密码丢失可以通过root账号修改。但是如果忘记root用户密码,就需要去找回或者重置root用户密码。

1、停止服务

net stop mysql

2、重启服务器,但是跳过权限

mysqld.exe --skip-grant-tables

【mysql基础系列十一】用户权限管理

注:当前启动的服务器没有权限概念。即任何客户端,不需要任何用户信息都可以直接登录,而且是root权限(新开客户端,直接使mysql登录即可)。

【mysql基础系列十一】用户权限管理

3、修改root用户密码,需要指定用户名。

【mysql基础系列十一】用户权限管理

4、进程中关闭mysql服务器(命令行关闭服务器有可能会失效),然后正常重启即可。