当前位置: 首页 > news >正文

MySQL数据库(13) 用户管理

目录

一,用户

1.1 关于用户

1.2 创建用户

1.3 修改密码

1.4 删除用户

二,权限

2.1 关于权限

2.2 给用户权限

2.3 移除用户权限


一,用户

1.1 关于用户

  • MySQL也有自己的账号管理系统,那么既然有账号,那么也就有普通用户和超级用户之分
  • MySQL的账号管理是以表的形式管理的,在MySQL刚刚安装的时候,会默认创建一些库,其中有一个库名叫做mysql:

查看其中的表,可以发现一个叫做 user 的表:

 这个user表里面存储的就是MySQL中用户相关的信息:

但是直接这样的话会刷屏,可以选择下面的SQL 让其只显示部分字段:

  • user:表示用户名
  • host:表示该用户可以从哪个主机登录,localhost表示只能从本机登录
  • authentication_string: 表示该用户的密码经过password函数加密后的值 

1.2 创建用户

注:如果后面的某些步骤出现ERROR,可以尝试使用SQL:flush privileges; 来刷新下内存 

假设我要创建一个用户,用户名为‘dyk’,可以从任意地点登录,并且将密码设置成‘123456’,则使用下的SQL:

再次查看前面的user表,可以发现有了我们刚刚创建的用户:

 然后我们就可以使用该用户名登录了,并且由于我们把host设置成%,那么如果我们本地的Windows系统也安装了MySQL,那么也可以使用这个用户去登录:

1.3 修改密码

在旧版本的MySQL中,我们使用下面的SQL来修改密码:

自己改自己的密码
set password=password('新的密码');root修改指定用户的密码
set password for 'dyk'@'%'=password('1234abcd');

但是在MySQL 8.0 以及之后的版本中,password函数已被移除并且不再推荐使用,而是引入了更安全的身份验证插件和密码哈希方法,默认情况下,MySQL 8.0 使用 caching_sha2_passwordmysql_native_password 插件来处理密码

 在MySQL 8.0 可以使用下面的SQL修改密码:

创建一个用户并设置密码
CREATE USER 'newuser'@'localhost' IDENTIFIED BY '新的密码';修改现有用户的密码
ALTER USER 'myuser'@'localhost' IDENTIFIED BY '新的密码';

 

1.4 删除用户

如果没有指定用户登录地址,默认删除的登录地址以为%的用户,因为MySQL允许有同名用户,只要登录地址不同即可

二,权限

2.1 关于权限

MySQL提供的权限如下:

  • All/All Privileges:权限代表全局或者全数据库对象级别的所有权限

  • Alter:代表允许修改表结构的权限,但必须要求有create和insert权限配合。如果是rename表名,则要求有alter和drop原表, create和insert新表的权限

  • Alter routine:代表允许修改或者删除存储过程、函数的权限

  • Create:代表允许创建新的数据库和表的权限

  • Create routine:代表允许创建存储过程、函数的权限

  • Create tablespace:代表允许创建、修改、删除表空间和日志组的权限

  • Create temporary tables:代表允许创建临时表的权限

  • Create user:代表允许创建、修改、删除、重命名user的权限

  • Create view:代表允许创建视图的权限

  • Delete:代表允许删除行数据的权限

  • Drop:代表允许删除数据库、表、视图的权限,包括truncate table命令

  • Event:代表允许查询,创建,修改,删除MySQL事件

  • Execute:代表允许执行存储过程和函数的权限

  • File:代表允许在MySQL可以访问的目录进行读写磁盘文件操作,可使用的命令包括load data infile,select … into outfile,load file()函数

  • Grant option:代表是否允许此用户授权或者收回给其他用户你给予的权限,重新付给管理员的时候需要加上这个权限

  • Index:代表是否允许创建和删除索引

  • Insert:代表是否允许在表里插入数据,同时在执行analyze table,optimize table,repair table语句的时候也需要insert权限

  • Lock:代表允许对拥有select权限的表进行锁定,以防止其他链接对此表的读或写

  • Process:代表允许查看MySQL中的进程信息,比如执行show processlist, mysqladmin processlist, show engine等命令

  • Reference:是在5.7.6版本之后引入,代表是否允许创建外键

  • Reload:代表允许执行flush命令,指明重新加载权限表到系统内存中,refresh命令代表关闭和重新开启日志文件并刷新所有的表

  • Replication client:代表允许执行show master status,show slave status,show binary logs命令

  • Replication slave:代表允许slave主机通过此用户连接master以便建立主从复制关系

  • Select:代表允许从表中查看数据,某些不查询表数据的select执行则不需要此权限,如Select 1+1, Select PI()+2;而且select权限在执行update/delete语句中含有where条件的情况下也是需要的

  • Show databases:代表通过执行show databases命令查看所有的数据库名

  • Show view:代表通过执行show create view命令查看视图创建的语句

  • Shutdown:代表允许关闭数据库实例,执行语句包括mysqladmin shutdown

  • Super:代表允许执行一系列数据库管理命令,包括kill强制关闭某个连接命令, change master to创建复制关系命令,以及create/alter/drop server等命令

  • Trigger:代表允许创建,删除,执行,显示触发器的权限

  • Update:代表允许修改表中的数据的权限

  • Usage:是创建一个用户之后的默认权限,其本身代表连接登录权限

信息来源: Mysql 用户权限管理(权限列表) - 数据库小白(专注) - 博客园

2.2 给用户权限

先创建一个用户用于演示:

我们在root用户下创建一个库并往里面插入一些数据:

然后我们切换成用户 ‘zhangsan’, 可以看到大部分的库都不可见:

所以我们要给zhangsan权限,如下SQL:

这时候切回zhangsan用户就能看到rootDB库以及user表了,能执行CURD操作:

给予用户权限SQL如下:

grant 权限名 on 库名.表名 to '用户名'@'登录地址' [identified by '密码'];
  • 权限名:表示要给予的权限列表,如果要一次性给予多个权限,那么多个权限之间由逗号分开
  • 库名.表名:表示要给予给用户哪个数据库下哪个表的权限
  • '用户名'@'登录地址':表示要给哪个用户权限
  • identified by '密码':这个是可选项,如果用户存在,则可以在给予权限时顺便修改下密码,如果用户不存在,则创建用户并设置密码 

2.3 移除用户权限

移除权限SQL如下:

revoke 权限名 on 库名.表名 from '用户名'@'登录地址'
  • 移除权限的语法和给予是一样的,只是将to关键字改成了from,并且去掉了修改密码的字段 

上面是对单个表做操作,也可以把表名换成‘ * ’,表示对该库下的所有表的权限做操作

需要注意的是,回收权限后将会在该用户下一次进入数据库时才会生效,如果回收权限时该用户正在使用对应的数据库,那么此时回收权限后该用户仍拥有对应权限 

相关文章:

  • kubernetes环境手动部署 Prometheus 监控系统安装文档
  • 差分优化效率
  • 研发内控新规下的合规之道:维拉工时助力企业穿越IPO审查雷区
  • 深入浅出 MVVM:理解现代前端开发的核心架构模式
  • 贪心算法~~
  • Sand AI 开源 MAGI-1 视频生成模型,近屿智能带你领略无限扩展的 AI 视界
  • 《深入理解计算机系统》阅读笔记之第二章 信息的表示和处理
  • Apipost免费版、企业版和私有化部署详解
  • 保安员证考试的理论知识有哪些重点?
  • 计算机基础 原码反码补码问题
  • 一篇速成Linux 设置位 S(SetUID)
  • kafka课后总结
  • 简述:变更调查的历史情况
  • 定时任务:Quartz
  • Windows同步技术-使用命名对象
  • MySQL引擎分类与选择、SQL更新底层实现、分库分表、读写分离、主从复制 - 面试实战
  • 明远智睿SD2351核心板:以48元撬动AI视觉产业革命的“硬核引擎”
  • 队列基础和例题
  • 保障海外业务发展,U-Mail邮件中继提供高效安全的解决方案
  • [Mybatis-plus]
  • 中方会否公布铁线礁的领海基线?外交部:中方执法活动旨在反制菲方侵权挑衅
  • 幸福航空取消“五一”前航班,财务人员透露“没钱飞了”
  • 新任海南琼海市委副书记陈明已主持市政府党组全面工作
  • 滨江集团去年营收约691亿元,尚未结算的预收房款1253亿元
  • 地下管道密布成难题,道路修整如何破局?
  • 俄联邦安全局:俄军高级官员汽车爆炸案嫌疑人已被捕