目录
用户管理
介绍
user表
介绍
列信息
Host
User
*_priv
authentication_string
用户管理的本质
操作
创建用户
删除用户
修改用户信息
修改密码
自己修改
root用户修改指定用户的密码
数据库的权限
权限列表
给用户授权
查看权限
回收权限
刷新权限
用户管理
介绍
对用户做管理,一定要记录相关权限信息
- 所以需要在mysql中保存
- 也就是会以表结构形式存在 -- user表
mysql的管理系统允许数据库管理员控制用户的权限和访问级别
user表
介绍
存放在mysql系统数据库下
- 存储了所有用户的信息、权限以及相关的访问控制数据
列信息
Host
允许该用户从哪台机器上登录mysql
- 本地 -- localhost / 127.0.0.1
- 指定ip地址
- 任何主机 -- %
User
用户名
*_priv
进行各种操作的权限
authentication_string
(不同版本的mysql这个字段名不同)
登录密码
- 会对实际密码通过哈希算法加密,然后将哈希值保存到表中
用户管理的本质
根据user表中的数据我们就能明白,在mysql下给用户开账号
- 本质上就是向user表中增加用户信息,设置权限,密码等
所以,用于用户管理的sql语句
- 实际上就是对user表进行增删改
操作
创建用户
create user '用户名'@'登录主机/ip' identified by password('密码')
- 登录主机/ip不可以省略
因为这里涉及输入密码的操作,mysql不会记录下来
- 所以无法通过上下翻来找到创建用户的sql语句
删除用户
可以通过表结构来删除
- 使用delete+where来删除
也可以使用专门的sql语句
- drop user '用户名'@'主机名'
修改用户信息
目前没有专门的sql语句可以用来修改用户信息(密码是可以的哈)
- 比如用户名,可登录设备等
可以选择删除用户,重新设置属性
或是直接对user表进行修改
- update指定字段
修改密码
本质上就是在修改user表中的密码列
自己修改
set password=password('密码');
- 如果不使用password函数,会提示说需要41个字符的密码
root用户修改指定用户的密码
set password for '用户名'@'主机名'=password('密码');
数据库的权限
权限列表
给用户授权
grant 权限列表 on 库.对象名 to '用户名'@'登录位置'
- 权限列表 -- 多个权限用逗号分开
- 库就是数据库,对象就是表
- 也就是要指明对哪个数据库下的哪张表进行设置,并把这张表的某些权限给某个用户
- 可以使用*来指代 所有数据库 / 某个库下的所有表
权限列表可以用all来指代所有权限
查看权限
show grants for '用户名'@'登录位置'
回收权限
revoke 权限列表/ all on 库.对象名 from '用户名'@'登录位置'
- 回收的时候,要和已有权限对应起来
刷新权限
flush privileges
使得mysql重新加载权限表,让对用户权限的修改立即生效,而不用重启mysql服务