MySQL学习笔记(10)--用户权限管理

·概念

在不同的项目中给不同的角色(开发者)不同的操作权限,为了保证数据库数据的安全。
通常一个用户的密码不会长期不变,所以需要经常变更密码。

·用户管理

MySQL需要客户端进行连接认证才能进行服务器操作,需要用户信息。MySQL中所有的用户信息都是保存在MySQL数据库下的user表中

select * from mysql.user;     
--host:允许访问的客户端(ip或者主机地址),使用%代表所有用户(客服端都能访问)
--user:用户名
--后面是对应权限

在这里插入图片描述
默认的,在安装MySQL时,如果不选择创建匿名用户,那么意味着只有一个root超级用户。

desc mysql.user;

在这里插入图片描述
host 和 user 形成复合主键

·创建用户

理论上讲有两种方式
1.直接使用root在mysql.user表中插入记录(不推荐)
2.专用的创建用户SQL指令
用户:指用户名@主机地址
主机地址:’’(空)/ ‘%’

create user 用户名 identified by '明文密码';
--实例
create user 'user1'@'%' identified by '123456';

简化版创建用户(不安全,不推荐)

create user user2;   --不限定客户端ip,没有密码的用户

·删除用户

注意:MySQL中user是带着host的(具有唯一性)

drop user 用户名 @ host

·修改用户密码

有多种方式,基本上都必须使用系统提供的password()函数,需要靠该函数对密码进行加密处理
1.专用的修改密码的指令

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

2.使用更新语句来修改表

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

·权限管理

  1. 数据权限:增删改查(insert\ delete\ update\ select)
  2. 结构权限:结构操作(create\ drop)
  3. 管理权限:权限管理(create user\ grant\ revoke):通常只给管理员

·授予权限

将权限分配给指定用户

grant 权限列表 on 数据库.表名 / * to 用户;
--实例
grant select on my_database.my_student to user1;

权限列表:使用逗号分割,但是可以用all privileges 代表全部权限
数据库.表名:可以是单表,可以是某个数据库,也可以是整库

·取消权限

权限回收

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

·刷新权限

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

flush privileges;

·密码丢失找回

如果忘了root密码,需要重置密码

  1. 停止服务 net stop mysql
  2. 重新启动服务 mysqld.exe --skip-grant-tables //启动服务器但是跳过权限 (当前启动的服务器没有权限概念:非常危险,任何客户端不需要任何用户信息都可以直接登录,而且时root权限)
  3. 修改root用户的密码,指定用户名@host
  4. 重启MySQL
发布了19 篇原创文章 · 获赞 20 · 访问量 9540

猜你喜欢

转载自blog.csdn.net/qq_39323164/article/details/104134371