MySQL用户管理

写在前面:本文先列举常见的MySQL用户管理命令。如果需要详细的资料,请往后阅读。

  • 查询用户

    select host ,user,authentication_string from user;

  • 新增用户

    create user '用户名'@'登陆主机/ip' identified by '密码';

  • 删除用户

    drop user '用户名'@'ip'

  • 修改密码

    set password for '用户名'@'主机名'=password('新的密码');

  • 给用户赋权

    grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' ;

  • 回收用户权限

    revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';

  • 刷新权限

    flush privileges;

为什么存在用户?

  • 在mysql也有普通用户和超级用户。超级用户拥有一切权限,对任何表和任何库进行CURD。
  • 但是在工程中,避免对表进行误操作。通常会以root身份在创建一个普通用户,用来对指定库和表进行select。
  • 所以,用户是用来保证数据的安全性,降低风险的。

用户信息

在mysql一切都可以当作"表",对于用户信息的管理,也是以表来对待的。

在mysql库中,就存在user表中,存放用户的基本信息。

通过select 指令查询一下

复制代码
select host ,user,authentication_string from user;

字段说明:

  • host:主机名
  • user:用户名
  • authentication_string:是经过加密的用户密码

通过desc 详细看一下表

复制代码
desc user;

在user表中除了基本的用户信息,主机名、用户名、密码等,还存在一系列的权限。

如select_priv 就是查询权限。后续会介绍。

MySQL可以存在同名的用户,因为host和user是共同组成复合主键。


创建用户

复制代码
create user '用户名'@'登陆主机/ip' identified by '密码';

登录的ip:

%表示接收任意地方登录。最好不要设置为任意地方登录,因为MySQL会被盗取。

localhost:本地的MySQL登录

127.0.0.1:本地的MySQL登录

下面创建一个可以从任意地方登录的普通用户;

创建用户成功后,user表也添加进test_user用户。

验证Local登录:另启一个MySQL,以test_user的身份登录。


删除用户

复制代码
drop user '用户名'@'ip';

说明一下:因为user表,用户名和ip是复合主键,所以用户名可能重复。删除的时候需要指定ip。

演示:

删除用户 test_user

复制代码
drop user 'test_user'@'%';

修改用户密码

  • 自己修改自己的密码

    set password=password('新的密码');

例如test_user修改自己的密码操作

  • root修改普通用户的密码

    set password for '用户名'@'主机名'=password('新的密码');


用户权限的管理

数据库用户的权限表:

值得注意的是,普通用户创建下来是没有任何权限的,不能进行CURD

左边是普通用户,右边是超级用户。二者看到的库是不一样的。


给用户赋权

复制代码
grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' ;

常见的权限列表

  • grant select on ....
  • grant select, delete , insert on....
  • grant all on ....

on + 的说明

* . * :代表本系统中的所有数据库的所有对象(表,视图,存储过程等)

库 . * :表示某个数据库中的所有数据对象(表,视图,存储过程等)

库 . 表 :表示某个库的某个表的数据对象

演示:赋权并且验证

左边为普通用户,无权限。右边是root,给普通用户创建test库并且附上所有CURD的权限

赋权之后,普通用户就能正常的进行CURD


用户查看权限

复制代码
show grants for 'root'@'%';

回收用户的权限

复制代码
revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';

root回收普通用户test_user的权限,但普通用户依旧看到,因为权限没有刷新。

复制代码
flush privileges;

总结:所谓的用户操作无非就是对特定用户表的新增删除,增加权限。一般而言创建普通用户只给部分权限,如某个库中的权限、甚至是某个表的读取权限。

相关推荐
wangbing11255 分钟前
window server 2012安装sql server2008 r2
数据库
码上飞扬7 分钟前
深入解析MySQL联合查询(UNION):案例与实战技巧
数据库·mysql
Leo.yuan13 分钟前
数据分析怎么做?高效的数据分析方法有哪些?
大数据·数据库·信息可视化·数据挖掘·数据分析
zm33 分钟前
网络编程epoll和udp
服务器·网络·数据库
野犬寒鸦37 分钟前
Linux常用命令详解(下):打包压缩、文本编辑与查找命令
linux·运维·服务器·数据库·后端·github
Ultipa2 小时前
回答 | 图形数据库neo4j社区版可以应用小型企业嘛?
数据库·neo4j·图数据库
charlie1145141912 小时前
逐步理解Qt信号与槽机制
数据库·qt
alpha xu2 小时前
Qwen智能体qwen_agent与Assistant功能初探
数据库·人工智能·python·oracle·智能体·千问agent
大模型最新论文速读3 小时前
在Text-to-SQL任务中应用过程奖励模型
数据库·人工智能·sql·深度学习·语言模型·自然语言处理
Amctwd3 小时前
【PostgreSQL】不开启归档模式,是否会影响主从库备份?
数据库·postgresql