mysql数据库访问控制查询_MySQL ------ 管理用户对数据库的访问控制(GRANT 与 REVOKE)(二十九)...

2023-11-06

数据库服务器通常包含着关键的数据,所以为了确保这些数据的安全和完整需要要利用访问控制。

MySQL服务器的安全基础是:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少(即用户不能对过多的数据具有访问权)

访问控制:需要给用户提供他们所需的访问权,且仅提供他们所需的访问权。

管理访问控制需要创建和管理用户账号

如:

1、多数用户只需要对表进行读和写,但少数用户甚至需要能创建和删除表

2、某些用户需要读表,但可能不需要更新表

3、你可能想允许某些用户添加数据,但不允许他们删除数据

4、某些用户(管理员)可能需要处理用户账号的权限,但多数用户可能不需要

5、你可能想让用户通过存储过程访问数据,但不允许他们直接访问数据

6、你可能根据用户登录的地点限制对某些功能的访问

MySQL Administrator  提供了一个图形用户界面,用来管理用户及账号权限。本文使用语句进行操作

最开始安装时为了操作数据库,需要登陆MySQL,创建一个名为root用户账号,使它对整个MySQL 服务器具有完全的控制,之前的操作也是依赖于此账号,你一个人怎么弄都行,但是要是实际使用的话,应该创建一系列的账号,有的用于管理,有的用于用户、开发等等

注意:

1、访问控制的目的不仅仅是防止用户的恶意企图,更常见的是防止无意识的操作错误,通过保证用户不能执行他们不应该执行的语句,有利于维护数据的安全,

2、要严肃对来root 登录使用,仅在绝对需要的时候使用它

管理用户

One、查看用户

MySQL用户账号和信息存储在名为mysql  的数据库,一般不需要直接访问mysql 数据库和表,但有时需要直接访问

需要直接访问它的时机之一是在需要获得所有用户账号列表时

--使用名为mysql 的数据库

usemysql;--查看有哪些用户

select user from user;

379d59a4b3bbf71954fdf757da7ab662.png

从中可以看出,mysql 数据库中有一个名为user 的表,它包含所有的用户账号,

user表中有一个名为user 的列,它存储用户登录名。新安装的一般就一个root 用户

296c44e0f11c575c52badcb461963b25.png

试验对用户账号和权限进行更改的最好方法就是打开多个数据库客户机(如mysql命令行实用程序的多个副本),作为一个管理登录,其他作为被测试的用户登陆

Two、创建用户账号(并指定密码)

cretae user 创建一个新用户账号,在创建用户账号时不一定需要口令(即密码),指定口令时使用 IDENTIFIED BY 进行指定

--create user 用户名 identified by 密码

create user obge identified by 'password123';

06aa528cb7edc645af816446a2ed8845.png

这个表有 45行,有很多是一些其访问权限的控制

565b33e2684105948208043e3fd384f0.png

验证一下有没有,创建成功

6384d2d3006893b748ecfcb0c73efe3b.png

注意:

1、identified by 指定的口令为纯文本,MySQL将在保存到user 表之前对其加密,为了作为散列值指定口令使用 IDENTIFIED BY PASSWORD

IDENTIFIED BY PASSWORD

2、GRANT 语句也可以用于创建用户账号,但一般使用CREATE USER ,因为create user 语句最为清楚和简单,也可以使用insert语句进行增加不过一般不建议,因为MySQL用来存储用户账号信息的表(以及表模式等)极为重要,对他们的任何毁坏都有可能严重的伤害到MySQL服务器,因此相对于直接处理来说,最好是用标记和函数来处理这些表。

Three、重命名用户名 (RENAME)

--RENAME USER 原来的名字 TO 现在的

rename user obge to boge;

7146c618fd2550a72b749b85827c455f.png

注意:仅在MySQL 5  或之后的版本支持上述语句(rename user),之前是通过 update语句进行更新

Four、更改口令

使用 SET PASSWORD ,新的口令必须加密

主要分为两种,一种是给指定的用户设置密码,另一种是自己设置自己的密码

--给 obge 这个用户更改密码

set password for obge = password('pwdobge');--更新当前登陆用户的密码,不需要指定用户

set password = password('rootobge');

e332d1f145bb05f4c57cfd64fcbc0038.png

注意:SET PASSWORD 更新用户口令时,新的口令必须传递到Password()函数中进行加密

Five、删除用户账号(DROP)

为了删除一个用户账号(以及相关的权限),使用 DROP USER 用户名

--删除名为 boge 的用户

drop user boge;

c265ab1367284d61ae3bc3775ffb4219.png

注意:MySQL 5 或之后的版本可以通过 drop  user 来删除用户账号和所有相关的账号权限,但是之前的版本,使用drop user 语句只能删除用户账号,不能删除账号权限,还要先借助 REVOKE删除与账号相关的权限,然后在使用drop user 删除账号。

Six、设置访问权限(GRANT)

在创建用户账号后必须接着分配访问权限。因为新创建的用户账号没有访问权限,虽然可以登陆MySQL但不能看到数据,不能执行任何数据操作。

1、查看赋予用户账号的权限

--SHOW GRANTS FOR 用户账号名

show grants for obge;

99dfe09a6b5235b991de78834c5f8320.png

上述中, USAGE ON *.* 表示没有权限,与之相对的是  ALL PRIVILEGES ON *.* 与所有权限。

而 GRANT USAGE ON *.* TO 'obge'@'%'  就可以理解为,在任意数据库和任意表上对任何东西没有权限。

MySQL 的权限使用: 用户名和主机名结合定义(user@host),

如果不指定主机名,则使用默认的主机名%授予用户访问权限而不管主机名

21ec1f0b4eb401c18384127335c364d2.png

2、使用 grant 语句进行设置权限

设置时需要至少提供:要授予的权限,被授予访问权限的数据库或表以及 用户名

如:设置 obge 这个用户只可以查询 bookstu 这个数据库的所有表

--GRANT SELECT ON 数据库名.* TO 用户名

grant select on bookstu.* to obge;

ce45fe28a2b44e4837a21ab305b0975a.png

上述 grank 允许 用户在bookstu 数据库的所有表(bookstu.*)上使用 select,通过只授予select 访问权限,用户 obge ,对bookstu 这个数据库中的所有数据具有只读权限。

登陆测试一下

2d512031b757d308d0978afc73943aaa.png

3、撤销特定的权限(REVOKE)

--REVOKE 设置的权限 from 用户名

revoke insert on bookstu.archive_orders from obge;

撤销用户obge 对 bookstu.archive_orders 的增加权限

de3b519039e08ca50076c436f4f85066.png

注意: 被撤销的访问权限必须存在否则会报错

4、GRANT 与 REVOKE

4.1、grant 与revoke 可在以下几个层次进行控制访问权限

a、整个服务器,使用GRANT ALL 和 REVOKE ALL

b、整个数据库,使用 ON database.*

c、特定的表,使用ON databse.table

d、特定的列

e、特定的存储过程

4.2、可以授予和撤销的每个权限

2828293a9ab90c3b9b7e60c5f4b4515d.png

使用 grant 和revoke 结合表中列出的权限,可以完全控制用户对数据做什么事情和不能做什么事情。

注意‘:

1、在使用grant和 revoke时,用户账号必须存在,但对所涉及的对象没有这个要求。这允许管理员在创建数据和表之前设计和实现安全措施,但是这样做的副作用是当某个数据库或表被删除时,相关的访问权限依然存在,而且将来重新创建该数据库或表时,这些权限依然起作用,所以建议,在设置权限时对那些存在的数据库和表进行设置表

2、可以通过列出各个权限并用逗号分隔,将多条grant 语句串在一起

--允许obge 对 bookstu 数据库中的表执行 增加和查看操作

grant select、insert on bookstu.* to obge;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql数据库访问控制查询_MySQL ------ 管理用户对数据库的访问控制(GRANT 与 REVOKE)(二十九)... 的相关文章

  • swift无法创建空init构造函数,如何给类变量赋予nil空值

    今天学swift的时候遇到一个问题 无法创建一个空的类对象 最主要的是 无法让对象的类变量为空 比如创建一个Person类 年龄age用Int属性 但是age默认是0 不是空值nil 以下代码给出了解决方案 import Foundatio
  • SSH远程登录原理与运用

    SSH是每一台Linux电脑的标准配置 随着Linux设备从电脑逐渐扩展到手机 外设和家用电器 SSH的使用范围也越来越广 不仅程序员离不开它 很多普通用户也每天使用 SSH具备多种功能 可以用于很多场合 有些事情 没有它就是办不成 本文是
  • 基于用户 的协同过滤算法

    计算用户相似度和用户对未知物品的可能评分 基于用户的协同过滤算法主要包括两个步骤 1 找到和目标用户兴趣相似的用户集合 2 找到这个集合中的用户喜欢的 且目标用户没有听说过的物品推荐给目标用户 例如现在有A B C D四个用户 分别对a b
  • bugku-本地管理员

    打开场景是登录框 尝试弱口令登录 这里我使用的弱口令有 admin 123456 admin 888888 admin admin admin admin23等 均登陆失败 提示IP已被记录 查看页面源码看看有没有什么提示 可以看到提示了
  • vue2-cli5使用postcss-pxtorem(px转rem)及适应手机微信

    前言 1 为了使项目适配于各种pc端分辨率 所以使用了此插件 2 设计图尺寸是1920 3 根据大多数移动端使用情况 只适配了微信系统 4 vue2 cli5 vue 2 6 14 node 16 14 2 vue2 cli5 ant de
  • PHP发送带附件的电子邮件,使用php发送带附件的电子邮件

    我使用此代码使用php发送带附件的电子邮件 但由于我收到电子邮件并且附件出现在内容中 因此附件中存在错误 在我使用相同的代码并且它成功运行之前 为什么 sending email with attachments function send
  • python设计模式-工厂模式-最简洁的说明与代码

    工厂模式简介 工厂模式实现途径是一个类或者一个方法 通过这个类可以自动化创建出我们想要的对象 工厂模式作用 便于实例化对象 还便于之后增加更多的对象 代码实现 class A pass class B pass class Factory
  • [创业-40]:优秀人与普通人的区别

    0 优秀者是接纳的 口袋 有则改之无则加勉 普通人是踢 皮球 1 优秀者以他人为中心 普通人以自我为中心 2 优秀者遇事先保持冷静 普通人遇事先发泄情绪 3 优秀者善于站在别人的角度思考问题 普通人希望别人站在自己的角度理解自己 4 优秀者
  • Qt unicode字串转中文

    有时候 直接在html里面获取的字符串就是带有 u 的 然后直接显示的时候 u 也会显示出来 这里就是教你如何去掉 u QString filename u6211 u662f u4e2d u6587 do int idx filename
  • 将vscode字体字号调大

    1 进入vscode 2 找到页面左下角齿轮标符点击 然后在弹出选项那里点击设置 setting 3 点击文本编辑器 4 点击字体 5 找到font size点击设置数字 个人建议18 22 即可
  • ‘close’ was not declared in this scope

    close was not declared in this scope 没有包含头文件 unistd h 造成的 加上 include
  • Spring Cloud 学习笔记二:搭建微服务工程之Eureka 注册中心开启安全认证

    目录 Eureka 注册中心开启密码认证 Eureka 注册中心开启密码认证 Eureka 自带了一个 Web 的管理页面 方便我们查询注册到上面的实例信息 但是有一个问题 如果在实际使用中 注册中心地址有公网 IP 的话 必然能直接访问到
  • 如何在30天内,通过TikTok变现一万美金。按照我的方法,你也可以

    大家好 我是项柚 最近创作者基金愈发火热 Tiktok又热了起来 但还是很多朋友停留在川普封停TT的时间节点上 一直没有时间 今天特意写一篇文章来详细分析 其实圈子很重要 方向很重要 所以很多Tiktok运营者做不好的原因是没有交流的圈子
  • [HFCTF2020]EasyLogin

    知识点 jwt伪造 jwt 全称 Json Web Token 是一种令牌格式 可以用来区分各个用户 形式是下面这样 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 eyJzZWNyZXRpZCI6MSwidXNl
  • GitHub C 和 C++ 开源库的清单(含示例代码)

    内容包括 标准库 Web应用框架 人工智能 数据库 图片处理 机器学习 日志 代码分析等 标准库 C 标准库 包括了STL容器 算法和函数等 C Standard Library 是一系列类和函数的集合 使用核心语言编写 也是C ISO自身
  • PintOS lab2 User Programs 实验记录

    Background 大体流程如下图所示 显然这时候start process无法被调度到 然后start process 里面load out文件 o文件就是对象文件 是可重定向文件的一种 通常以ELF格式保存 里面包含了对各个函数的入口
  • 教你手机如何查看真实的IP地址

    有朋友不会查询自己手机的IP地址 很多时候我们需要使用vpn切换手机当前的IP 如何判断我们切换IP成功了呢 今天站长就教你手机如何查看目前真实的IP地址 1 打开手机浏览器 2 在搜索框里输入 ip 然后点击搜索 在搜索结果页面就会显示你
  • ESP32 上快捷部署 Tensorflow lite 机器学习(TinyML)

    在这篇文章中 我将向您展示使用 Arduino IDE 将 TensorFlow Lite 模型部署到 ESP32 的最简单方法 无需任何编译内容 Arduino 库 这个 Arduino 库是为了简化使用 Arduino IDE 将用于微
  • 4.8xml于json

    HTTP 协议 HyperText Transfer Protocol 超文本传输协议 是 TCP IP 协议集中的协议 是一个简单的请求 响应协议 指 定了客户端发送给服务器的消息以及服务器的响应 所有的 WWW 文件都必须遵守这个标准

随机推荐

  • matplotlib绘制饼状图

    源自http blog csdn net skyli114 article details 77508430 ticket ST 41707 PzNbUDGt6R5KYl3TkWDg passport csdn net pyplot使用pl
  • 接口测试基础

    目录 一 接口及接口测试概念 1 接口 接口的类型 2 接口测试 二 HTTP协议 1 HTTP协议的特点 2 URL格式 3 HTTP请求 4 HTTP响应 三 接口规范 1 传统风格接口 2 RESTful风格接口 四 接口测试流程 1
  • Python 11. OpenCV 透视变换

    import cv2 import numpy as np from matplotlib import pyplot as plt img cv2 imread pic4 PNG rows cols img shape 2 cv2 ims
  • 支持图文转换!PSD文档处理工具Aspose全新升级

    Aspose PSD是高级PSD和入门级AI文件格式操作API 允许创建和编辑Photoshop文件 并提供更新图层属性 添加水印 执行图形操作或将一种文件格式转换为另一种文件的功能 没有任何Adobe Photoshop或Adobe Il
  • [系统

    系统环境说明 系统 Deepin V20 平台 amd64 参考文献 asdf maven asdf document asdf plugins asdf vm安装 见多版本管理命令行工具asdf vm安装及使用 asdf vm安装Mave
  • 「C++学习笔记」面向.Net Core的(C++)CLR类库非专业入门(+使用Opencv)

    关键词 C CLR Net Core Net Famework Opencv C 目录 什么是CLR类库 本文说明 创建Demo程序 调用dll 通过项目引用 通过dll文件引用 其他还没完全清楚的坑 有关C CLI这块的资料真的很少而且都
  • 如何看待ChatGPT

    如何看待ChatGPT 如何看待ChatGPT 语言学家乔姆斯基说 这是一个抄袭的机器 欺骗性机器 ChatGPT使用大量文本数据进行训练 然后以一种令人信服的修饰语句展现 这使得它和人的互动能力更加契合 但是仍然不是一个充满创造力的智能机
  • 微信小程序之拨打电话

    微信小程序拨打电话功能的实现是采用wx makePhoneCall 具体方法如下 wxml lt view gt 电话 15888888888 lt view data ph 15888888888 bindtap callPhone gt
  • 【Android 12 AOSP学习】Android 12源码下载编译

    一 搭建环境 liunx系统 Ubuntu20 04 Android系统 12 1 安装 Repo 下载Repo前先安装 curl 库 sudo apt get install curl 下载好 curl 库后 设置清华源下载 Repo 然
  • 前端 JavaScript 提取 JSON 数据

    原文地址 假如我们从后端接收到了以下 JSON 数据 id 1 name Xu Albter age 18 使用 JSON parse 方法处理以上数据 将其转换为 JavaScript 对象 var obj JSON parse id 1
  • select函数缺陷分析

    与poll和epoll不同 select函数是事件为单位组织文件描述符 监视的行为较为单一 函数原型 int select int nfds fd set readfds fd set writefds fd set exceptfds s
  • 链表应用:两数相加

    关于链表 链表是一种极其重要的数据结构 因为对指针和抽象思维的要求较高 一度成为身边同学最痛恨的对象 我在将这里演示如何使用链表制作一个可以按位储存数字的容器 鉴于本人亦初学者 有错误请各位在评论区指正 这里还是以介绍链表为主 算法部分苦于
  • SpringCloud和微服务介绍

    SpringCloud介绍 微服务架构是什么 微服务实例的开发 服务的注册与发现 负载均衡 服务容错 API网关 分布式配置中心 调试 部署 持续集成 SpringCloud介绍 SpringCloud是在SpringBoot的基础上构建的
  • 一个完整详细的二维SVR案例分析过程

    文章目录 案例介绍 数据预处理 函数拟合仿真 SVR建模 模型调参 案例介绍 首先 此次案例是以油气开发为背景 选取加粗样式其中重要的两个参数含油饱和度和孔隙度分别作为此次案例的自变量和因变量进行试验 按照正常的案例分析步骤进行操作 此次为
  • 神经网络(ANN)

    算法介绍 概念 人工神经网络是由具有适应性的简单单元组成的广泛并行互连的网络 它的组织能够模拟生物神经神经系统对真实世界物体所作出的交互反应 在实际应用中 80 90 的人工神经网络模型是采用误差反转算法或其变形形式的网络模型 一个神经网络
  • 小程序的配置文件和小程序的模板语法

    微信小程序 小程序的配置文件 一个小程序应用程序会包括 会有最基本的两种配置文件 一种是全局的 app json 一种是页面自己的 page json 注意 配置文件中不可以出行注释 1 1 全局配置文件 app json app json
  • 主题模型(Topic Model)与LDA算法

    Topic Model 主题模型 Topic Model 是以非监督学习的方式对文档的隐含语义结构 latent semantic structure 进行聚类 clustering 的统计模型 主题模型认为在词 word 与文档 docu
  • 第十三章:QT多线程(QThread)

    回顾 第一章 Qt的概述 第二章 在Ubuntu编写第一个Qt程序 第三章 Qt的字符串和字符编码 第四章 Qt的信号和槽 第五章 Qt容器窗口 父窗口 第六章 面向对象的Qt编程 第七章 Qt设计师使用 designer 第八章 Qt创造
  • Unittest框架多个testcase之间全局变量的调用

    unittest模块进行接口自动化的时候遇到以下场景 新增 修改 查看 删除一个项目配置流程 但是每次用真实数据请求 数据库就会增加很多脏数据 所以就产生了数据一条龙服务 从新增到删除 涉及到了Unittest下个接口需要调用上个接口的返回
  • mysql数据库访问控制查询_MySQL ------ 管理用户对数据库的访问控制(GRANT 与 REVOKE)(二十九)...

    数据库服务器通常包含着关键的数据 所以为了确保这些数据的安全和完整需要要利用访问控制 MySQL服务器的安全基础是 用户应该对他们需要的数据具有适当的访问权 既不能多也不能少 即用户不能对过多的数据具有访问权 访问控制 需要给用户提供他们所