【MySQL系列】MySQL的用户管理

「前言」文章内容大致是MySQL的用户管理。

「归属专栏」MySQL

「主页链接」个人主页

「笔者」枫叶先生(fy)

MySQL

目录

  • 一、用户管理
    • 1.1 用户信息
    • 1.2 创建新用户
    • 1.3 删除用户
    • 1.4 修改用户密码
  • 二、数据库的权限
    • 2.1 给用户授权
    • 2.2 回收用户权限

一、用户管理

  • MySQL与Linux类似,也分普通用户的root用户
  • 如果只能使用root用户,这样存在安全隐患,这时就需要使用MySQL的用户管理,对用户进行权限管理

1.1 用户信息

在MySQL里,默认带有一个mysql的数据库
在这里插入图片描述
该数据库中有一张user
在这里插入图片描述
该表存放的就是MySQL用户相关的信息(\G按行打印)
在这里插入图片描述
部分字段说明:

  • user:表示该用户的用户名
  • host:表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆,%表示可以从任意地方登录
  • authentication_string:用户密码通过password函数加密后形成的字符串
  • *_privxxx_priv):表示用户拥有的权限,Y拥有该权限,N没有

查看当前用户

select user();

在这里插入图片描述
注:root是用户名,localhost是主机名

1.2 创建新用户

创建用户的SQL如下:

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

创建一个用户名为test,可以从任意地方登录的用户

 create user 'test'@'%' identified by '123123aa';

注:%表示可以从任意地方登录,是localhost,表示只能从本机登陆

MySQL本身的认证级别比较高,因此创建用户时设置的密码不能太简单,否则会出现报错,这时你可以选择将密码设置复杂一些,也可以对密码相关的设置进行调整

要降低MySQL输入密码的安全强度,可以通过修改validate_password的相关变量来实现

查看当前的validate_password相关变量

show variables like 'validate_password%';

在这里插入图片描述
validate_password_policy的默认值为1,表示密码必须包含数字、小写字母、大写字母和特殊字符。将其设置为0将禁用这些要求

 set global validate_password_policy=0;

在这里插入图片描述
创建新用户成功后,该用户的相关信息也就被写入到刚才的user表中了,进行查看该用户(信息太多,进行过滤)

 select user,host,authentication_string from user;

在这里插入图片描述
可以用新创建的普通用户来连接MySQL服务器
在这里插入图片描述
创建的这个用户可以从任意地方登录,因此如果你在Windows下也安装了MySQL,那么就可以在Windows的cmd窗口进行远程登录
在这里插入图片描述
注意

  • 在MySQL里涉及到密码password,该SQL不会被历史记录下来
  • 注意,不要轻易添加一个可以从任意地方登陆的用户,进行测完就删除(不然容易黑客挨打)

1.3 删除用户

删除用户语法如下:

drop user '用户名'@'主机名';

例如,删除上面的test用户

drop user 'test'@'%';

在这里插入图片描述

1.4 修改用户密码

自己改自己密码

语法如下:

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

root用户修改指定用户的密码

语法如下:

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

二、数据库的权限

  • 如果一个用户只需要访问MySQL中的某一个数据库,甚至数据库中的某一个表,那么可以为其创建一个普通用户
  • 并为该用户赋予对应的权限,而不让该用户看到数据库中的其他数据,防止该用户对其他数据进行误操作

MySQL数据库提供的权限列表

在这里插入图片描述
注意:新创建的用户没有任何权限,因此创建用户后需要给用户授权

2.1 给用户授权

刚创建的用户没有任何权限,需要给用户授权,语法如下:

grant 权限列表 on.对象名 to '用户名'@'登陆地址/ip' [identified by '密码']

说明:

  • to:to后面跟的是用用户,表示给哪一个用户授权
  • 库名.对象名:表示要授予用户哪个数据库下的哪个对象(表)的权限
  • 例如,*.* : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)
  • 库.* : 表示某个数据库中的所有数据对象(表,视图,存储过程等)
  • identified by可选项:如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户
  • 权限列表:表示要授予用户何种权限,多个权限之间用逗号隔开
-- 权限列表,例如
grant select on ... -- 赋予select权限
grant select, delete, create on -- 表示赋予select, delete, create权限
grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限

创建一个新用户zhangsan,然后通过一些命令可以查看该用户现有的权限

show grants for '用户名'@'登录地址';

例如:

 show grants for 'zhangsan'@'localhost';

在这里插入图片描述

  • 创建用户后该用户默认会有USAGE权限,该权限只能用于数据库登录,不能执行任何操作

查看该用户的数据库,只有一个系统自带的,root用户下的数据库普通用户看不到
在这里插入图片描述
在root用户下创建一个test_db的数据库,授予zhangsna用户在test_db数据库下所有对象的select权限

grant select on test_db.* to 'zhangsan'@'localhost';

在这里插入图片描述

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

此时查看该用户的数据库,就能查看到该数据库了
在这里插入图片描述
该用户目前只能查看表中的信息,而不能对表中的数据进行其他操作,如果需要进行其他操作,需要赋予相应的权限
在这里插入图片描述
下面将test_db该数据库的所有权限赋予给该用户,授权之后该用户就可以对该数据库进行任何操作了(不演示了)

 grant all on test_db.* to 'zhangsan'@'localhost';

在这里插入图片描述

注意:如果发现赋权限后,没有生效,执行如下指令:

flush privileges;

2.2 回收用户权限

回收用户权限SQL语法如下:

revoke 权限列表 on.对象名 from '用户名'@'登陆地址/ip';

回收权限的语法与授权语法相似,不解释了

例如,将zhangsan用户在test_db数据库的所有权限进行回收

revoke all on test_db.* from 'zhangsan'@'localhost';

在这里插入图片描述
注意:如果回收权限时该用户正在使用对应数据库,那么回收权限后该用户仍然拥有对应的权限,只有下一次该用户再进入该数据库时新权限才会起作用
--------------------- END ----------------------

「 作者 」 枫叶先生
「 更新 」 2023.9.13
「 声明 」 余之才疏学浅,故所撰文疏漏难免,或有谬误或不准确之处,敬请读者批评指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/77550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NAT(网络地址转换)

文章目录 一、产生背景二、公有地址和私有地址三、定义四、分类五、常用命令 首先可以看下思维导图,以便更好的理解接下来的内容。 一、产生背景 IPv4公网地址资源耗尽: 由于IPv4地址空间有限,公网IPv4地址资源逐渐耗尽,导致难以分…

基于Android的生鲜农产品商城交易设计与实现

摘 要 人们生活水平随着发展不断的提升,人们对生鲜产品消费比越来越依赖,都希望吃到新鲜的食品。消费的加大给生鲜了全新的供应链及销售模式,那种传统的生鲜配送模式也在发生着变化。生鲜系统电商平台在我国目前是属于盛行的电商行业&#x…

如何将pdf文件变小?三招学会pdf文件压缩

在日常工作和生活中,我们常常需要处理大量的PDF文件,然而,有时候这些文件的大小会成为问题,比如文件太大无法通过邮件发送、在线上传,或者在手机上打开时读取缓慢等,为了解决这些问题,我们需要将…

PN结解释

基本原理 PN结由P和N组成 硅掺杂硼,缺少电子,显正电,就是P(Positive) 硅掺杂磷,多出电子,显负电,就是N(Negative) 将P和N拼接 左边代表游离的电子&#xf…

flex布局学习笔记

flex布局 推荐网址:弹性框完整指南 |CSS-Tricks - CSS-Tricks 基础知识和术语 由于flexbox是一个完整的模块,而不是一个单一的属性,它涉及很多事情,包括它的整套属性。其中一些应该在容器(父元素,称为“…

这些嵌入式系统安全性的知识你需要了解

这可能是 工程师在面对嵌入式系统应用程序的安全性时可能提出的第一个问题。 不幸的是,有大量的“安全软件包”可用,并且对安全性不熟悉的嵌入式工程师可能只将安全性称为加密或病毒防护。尽管加密是安全性的一种工具,而病毒扫描程序从技术上…

Python爬虫实现(requests、BeautifulSoup和selenium)

Python爬虫实现(requests、BeautifulSoup和selenium) requests实现 Python requests 是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。 下载requests库 pip install requests 实例: # 导…

基于Android系统图书管理系统

摘要 随着移动终端使用率的快速增加,Android智能产品已日益成为越来越多的人们选择的移动终端产品。伴随着Android智能手机与平板电脑已经在我们生活大量的使用,越来越多的基于Android开发平台的应用也随之产生。 便捷的图书检索和借阅:用户可…

ACL(访问控制列表)

文章目录 一、ACL定义常见功能 二、基于ACL的包过滤定义包过滤的方向包过滤的工作流程注意事项 三、ACL分类四、常用命令 首先可以看下思维导图,以便更好的理解接下来的内容。 一、ACL 定义 ACL,也称为访问控制列表,是一种网络安全工具&…

【爬虫】8.1. 深度使用tesseract-OCR技术识别图形验证码

深度使用tesseract-OCR技术识别图形验证码 文章目录 深度使用tesseract-OCR技术识别图形验证码1. OCR技术2. 准备工作3. 简单作用了解3.1. 验证码图片爬取-screenshot_as_png3.2. 识别测试-image_to_string3.2.1. 正确识别3.2.2. 错误识别3.2.3. 灰度调节 3.3. 识别实战-使用im…

卫星地图-航拍影像-叠加配准套合(ArcGIS版)

卫星地图-航拍影像-叠加配准套合(ArcGIS版) 发布时间:2018-01-17 版权:BIGEMAP 第一步 工具准备 BIGEMAP地图下载器:Bigemap系列产品-GIS行业基础软件kml\shp 相关教程:CAD文件直接导入BIGEMAP进行套合配准(推荐&am…

TC测试自动化Shell脚本

在使用TC测试的发现手动进行丢包延迟抖动等场景的组合以及TC命令的切换效率很低,写了一个脚本可以提升效率,也可以根据自己的需求进行脚本更改! 使用方法: 1)运行sh脚本 2)输入TC想要限制的网卡名和服务器…

数字信封技术概论

数字信封技术是一种通过加密手段实现信息保密性和验证的技术,它在保护敏感信息传输过程中得到了广泛应用。本文将详细介绍数字信封技术的原理、实现和应用场景。 一、数字信封技术的原理 数字信封技术是一种将对称密钥通过非对称加密手段分发的方法。在数字信封中…

【Fiddler】mac m1 机器上使用 fiddler 抓取接口

mac m1 机器上使用 fiddler 抓取接口(非虚拟机模式) author: jwensh date:2023.09.12 文章目录 mac m1 机器上使用 fiddler 抓取接口(非虚拟机模式)1. 环境准备2. 进行配置3. 使用情况 1. 环境准备 想要抓取 mac 上浏览器的接口&a…

JAVA8接口使用问题

JAVA8接口使用问题 文章目录 JAVA8接口使用问题1、默认方法冲突问题(1)亲爹优先原则(2)左右为难 2、常量冲突问题 1、默认方法冲突问题 (1)亲爹优先原则 当一个类,既继承一个父类,…

C语言数组和指针笔试题(一)(一定要看)

目录 一维数组例题1例题2例题3例题4例题5例题6例题7例题8例题9例题10例题输出结果 字符数组例题1例题2例题3例题4例题5例题6例题7 一维数组 int a[] {1,2,3,4}; 1:printf("%d\n",sizeof(a)); 2:printf("%d\n",sizeof(a0)); 3:printf("%d\n",si…

如何在JavaScript中实现链式调用(chaining)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ JavaScript中的链式调用⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴…

阿里云CDN架构接入WAF应用防火墙案例实践

文章目录 1.网站架构变化2.配置WAF应用防火墙2.1.配置网站接入WAF防火墙2.2.WAF防火墙生成CNAME地址2.3.配置WAF防火墙HTTPS证书2.4.WAF防火墙开启HTTP回源SLB 3.配置CDN加速器回源WAF防火墙4.将域名DNS解析指向CDN的域名5.测试网站是否能正常访问6.模拟攻击观察WAF的作用7.解除…

docker从零部署jenkins保姆级教程(下)

上一篇文章,我们完成了以下工作。 1)、docker部署jenkins 2)、建立第一个jenkins job 3)、通过jenkins job自动编译构建我们的github项目 上面所做的3个工作,其实都是为了这一篇文章打基础,不管是部署docker还是部署jenkins,我们最…