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

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

用户管理

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


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

1、创建用户

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

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

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


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

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 用户;


注: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


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

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


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

猜你喜欢

转载自blog.csdn.net/pjz161026/article/details/80379239