11 数据库用户权限管理:用户管理、权限管理、密码找回

用户权限管理:在不同的项目中给不同的角色(开发者)不同的数据库操作权限,以保证数据库的数据安全

一般情况下,一个用户的密码不会长期不变,所以需要经常性的变更数据库用户密码来确保用户本身的安全

用户管理

mysql中所有的用户信息都保存在mysql数据库下的user表中

-- 查询用户数据
SELECT * from mysql.`user`

默认情况下,在安装mysql的时候,如果不选择创建匿名用户,那么初始化的时候,所有用户只有一个root超级用户
在mysql中,在对用户的管理中,是由对应的host和user共同组成的主键来区分用户的

  • user:代表用户的用户名
  • host:代表的是允许访问的客户端或ip或主机地址

image

查看用户


-- 查询所有用户
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
posted @ 2024-07-13 09:22  songxia777  阅读(10)  评论(0编辑  收藏  举报