MySQL学习笔记(10)--用户权限管理
程序员文章站
2022-05-31 17:31:33
...
·概念
在不同的项目中给不同的角色(开发者)不同的操作权限,为了保证数据库数据的安全。
通常一个用户的密码不会长期不变,所以需要经常变更密码。
·用户管理
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 = 主机地址;
·权限管理
- 数据权限:增删改查(insert\ delete\ update\ select)
- 结构权限:结构操作(create\ drop)
- 管理权限:权限管理(create user\ grant\ revoke):通常只给管理员
·授予权限
将权限分配给指定用户
grant 权限列表 on 数据库.表名 / * to 用户;
--实例
grant select on my_database.my_student to user1;
权限列表:使用逗号分割,但是可以用all privileges 代表全部权限
数据库.表名:可以是单表,可以是某个数据库,也可以是整库
·取消权限
权限回收
revoke 权限列表 on 数据库.表名 / * from 用户;
·刷新权限
将当前对用户的权限操作进行刷新,将操作的具体内容同步到对应的表中
flush privileges;
·密码丢失找回
如果忘了root密码,需要重置密码
- 停止服务 net stop mysql
- 重新启动服务 mysqld.exe --skip-grant-tables //启动服务器但是跳过权限 (当前启动的服务器没有权限概念:非常危险,任何客户端不需要任何用户信息都可以直接登录,而且时root权限)
- 修改root用户的密码,指定用户名@host
- 重启MySQL