11 数据库用户权限管理:用户管理、权限管理、密码找回
用户权限管理:在不同的项目中给不同的角色(开发者)不同的数据库操作权限,以保证数据库的数据安全
一般情况下,一个用户的密码不会长期不变,所以需要经常性的变更数据库用户密码来确保用户本身的安全
用户管理
mysql中所有的用户信息都保存在mysql数据库下的user表中
-- 查询用户数据
SELECT * from mysql.`user`
默认情况下,在安装mysql的时候,如果不选择创建匿名用户,那么初始化的时候,所有用户只有一个root超级用户
在mysql中,在对用户的管理中,是由对应的host和user共同组成的主键来区分用户的
- user:代表用户的用户名
- host:代表的是允许访问的客户端或ip或主机地址
查看用户
-- 查询所有用户
SELECT * from mysql.`user`;
创建用户
-- 语法:
-- 主机地址:'' 或者 '%' 或者 'localhost'
-- %表示主机地址不做限制
create user '用户名'@'主机地址' identified by '明文密码';
-- 创建用户 songxia1 密码 songxia1
CREATE USER 'songxia1'@'%' IDENTIFIED by 'songxia1';
删除用户
注意:mysql中的user是带着host本身的,具有唯一性
-- 语法:
drop user '用户名'@'host';
-- 删除用户
DROP USER 'songxia2'@'localhost';
修改用户密码
-- 语法:
ALTER USER '用户名'@'host' IDENTIFIED BY ('新的密码值');
-- 修改密码
ALTER USER 'songxia1'@'%' IDENTIFIED BY '111';
权限管理
在mysql中,常见的权限管理分为三类:
数据权限:增删改查:一般是数据的查询、更改等
结构权限:结构操作:一般是表的创建和删除修改等
管理权限:权限管理:一般是管理员才有此权限,通常用于创建修改用户等、给用户授予权限grant、取消用户权限等revoke
授予权限grant
授予权限:将权限分配给指定的用户
-- 语法:
-- 1. 权限列表:多个权限使用 , 分割;all privileges 代表所有权限
-- 2. 数据库.表名:可以是单表(数据库名.表名)、也可以是某个数据库(数据库.*)、也可以是整个数据库(*.*)
grant 权限列表 on 数据库.表名(或者 *.* 表示整个数据库中的所有表)to '用户名'@'host';
-- 授予用户 查询 quanx
grant select on mydb.* to 'songxia1'@'%';
取消权限revoke
将权限从用户手中回收
-- 语法:
revoke 权限列表/all privileges on 数据库.表 from '用户名'@'host';
-- 回收/取消 用户所有权限
revoke all privileges on mysql.* from 'songxia1'@'%';
刷新权限
-- 语法:
flush privileges;
找回密码-root用户密码
如果忘记了普通用户的密码,可以直接以 root 用户的身份修改 普通用户的密码
但是如果忘记了root用户密码,一般是需要重置root用户密码的
1、 停止服务
net stop mysql
-- 获取在电脑客户端,通过进程 直接停止
2、 以mysqld的方式重新启动服务
-- 启动服务器,但是跳过对表的所有权限管理
mysqld.exe --skip-grant-tables
3、进入 mysql,可以直接进入,不用输入用户名和密码
mysql
4、 修改用户密码
-- 修改root用户密码
UPDATE mysql.`user` set PASSWORD =password('root') WHERE `User`='root' and `Host`='localhost';
5、 关闭服务,然后重启
-- 关闭服务
-- 获取通过电脑的进程 来关闭mysql服务
net stop mysql
-- 重启
net start mysql