【规范】我们是怎么做MySQL数据库安全管理的?

news2025/1/19 14:27:06

一、背景说明

MySQL作为数据库管理系统,里面保存企业的重要业务数据,因此保证数据库的安全性非常重要,如何保证数据库的安全性呢?用户和用户权限管理是一个很重要的方面。

MySQL数据库具有非常高的安全性,为我们提供了GRANT语句进行授权管理,并且它可以去自定义设置用户权限。
而MySQL数据库中的权限又会分为不同的几个功能,每个用户的权限可能都是不一样的。

二、如何查看权限

MySQL数据库查看一个用户的权限很简单,只需要知道这个用户的名称就可以了。在命令行之中输入mysql并进入相关的交互环境,执行以下命令查看用户权限,示例如下:

show grants for root

执行完成之后就会输出这个用户所具有的权限是哪些,有多少条权限就会输出多少条数据。
而root是管理员账号,它拥有全局操作和用户管理的两个权限。

三、设置权限(建立数据库权限分配)

MySQL数据库设置权限的关键词是grant,这关键词也可以用来去修改用户的信息以及创建新的用户,设置用户权限的命令如下所示:

GRANT ALL PRIVILEGES ON . TO ‘root’@‘localhost’ WITH GRANT OPTION

上面这一行命令的意思为为root这个用户在本地的数据连接之中添加一个可以对任意数据库去执行任意操作的权限,只要将ALL PRIVILEGES改为其他的权限属性值就可以更改设置的权限了。

重新赋予权限就可以了。

mysql > grant all privileges on 数据库.* to 用户名;

mysql > flush privileges;//刷新权限表

四、最佳的落地与实践

4.1 遇到报错:Command denied to user

在这里插入图片描述
CREATE command denied to user 问题解决方案
当前用户没有权限操作

遇到该问题,不要慌张,既然数据库的账号名是命名为read
就很自然而然可以想到,这个权限很有可能就只有只读权限了。

经过确认,这个goread的用户名,有且仅有read 权限,
拥有read权限,也就意味着只能读,而不能写。

4.2 如何做生产环境的数据修复?

因为运维与开发,在大的公司基本上是分离的,那么开发在数据修复时,可以按照参照以下步骤来完成,
当然,也会有很多公司会有自己的SQL审计工单系统来保障数据库的安全。

Step1、新建一个SQL查询语句

具体入口如下所示
在这里插入图片描述

Step2、编写修复的SQL脚本

编写类似于如下SQL脚本来实现业务数据的修复


/****************************************************************************************
【操作原因】填写具体的操作原因(如因修复异常的手机号等)
需求提单人:填写XXX姓名
脚本提供人:填写YYY姓名
脚本审核人:填写ZZZ姓名
运维执行人:填写AAA姓名

时间:填写编写脚本的时间

****************************************************************************************/

use 填写库名称;

create table 填写操作的表名称(user_info)_当前日期_bak as select * from 填写操作的表(user_info) WHERE id 
IN('XXXXXXXX(填写ID唯一值)');
 
-- 具体要修改的业务内容
--  用户1 张三 
select * from user_info where real_name = '张三' ;
-- 更新张三的手机号信息 
UPDATE user_info
SET phone = '修改后的手机号'
WHERE id = 'XXXXXXXX';

Step3、留意以下注意事项

(1)初始化SQL的用途,以及相应的签名,维护发起人,审核人,执行人,编写日期等内容
(2)必须标明你需要操作的sheme(库)是哪个?使用use 语句来实现。
(3)必须进行数据的备份,备份时,以防止SQL出错造成业务异常,采用增量备份
(4)select语句,这类用于辅助update、insert的语句,在发给运维之前,需要注释掉。
(5)部分数据,可能存在主键依赖,值唯一,因此需要先删除后插入之类。
(6)多运用注释,每句SQL脚本最好都以分号结尾
(7)将每次数据修复的数据内容,都在Navicat中进行SQL备份,以及进行本地SQL脚本备份(略)
(8)最好,把数据拷贝到沙箱环境,之后,基于沙箱环境的数据库进行数据库测试执行。
在这里插入图片描述

4.2 如何做生产环境时版本发布时?

4.2.1 初始化表结构与数据

留意以下注意事项
(1)将所有你要执行的SQL语句合并到一个SQL文件中进行导入操作,参考若依等框架的做法

(2)运维说可以使用数据库迁移工具flyway来实现快速迁移

因目前还没有做深入了解,目前还不做深入讲解,后面的文章会逐渐说明。

4.2.2 数据表结构变更

比如给订单表、SKU表加字段内容,直接编写以下Alter语句发给运维即可

ALTER TABLE `order_item`
ADD COLUMN `migu_order_no` varchar(255) DEFAULT NULL COMMENT '咪咕订单号';

ALTER TABLE `order_item`
ADD COLUMN `prize_code`  varchar(255) DEFAULT NULL COMMENT '咪咕奖励编码';

ALTER TABLE `goods_sku`
ADD COLUMN `prize_code` varchar(255) DEFAULT NULL COMMENT '咪咕奖励编码';

ALTER TABLE `goods_sku`
ADD COLUMN `prize_remark` varchar(255) DEFAULT NULL COMMENT '奖励备注';

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

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

相关文章

Vue 2 即将成为过去

自从 2020 年 9 月 18 日 Vue 3 正式发布以来,已经有两年多时间了,终于在 2022 年 2 月 7 日 Vue 作者发布了一则消息:Vue 3 将成为新的默认版本。与此同时,Vue 相关官方周边的核心库 latest 发布标签将指向其 Vue 3 的兼容版本。…

从0到1完成一个Vue后台管理项目(二十一、网上地图资源、树形控件及路由权限分析、路由守卫)

往期 从0到1完成一个Vue后台管理项目(一、创建项目) 从0到1完成一个Vue后台管理项目(二、使用element-ui) 从0到1完成一个Vue后台管理项目(三、使用SCSS/LESS,安装图标库) 从0到1完成一个Vu…

JAVA SE 详解类和对象

类和对象 面向对象的初步认知 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。 面 向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向…

ArcGIS基础实验操作100例--实验79分区统计降雨量

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验79 分区统计降雨量 目录 一、实验背景 二、实验数据 三、实验步骤 (1&am…

【VUE2-02】vue2的指令和vue2的缺点

文章目录一、vue条件渲染 v-if二、vue循环渲染 v-for三、vue的事件 v-on四、vue的双向绑定 v-model五、VUE2的缺点5.1 vue底层原理解决方案在上节 【VUE2-01】vue2的起步,中写hello world!例子的时候使用了一个指令 v-bind绑定元素属性一、vue条件渲染 v-if v-if控…

米筐量化终端是什么?

米筐量化终端大家应该也能想象到是应用的终端,是系统执行的终端环节,如果是用在量化方面,那它就是策略定制的终端,是方便投资者输入量化策略执行出来发最终优质目的,精确到细分股票的账户成交量,股价以及融…

java8 第七章-----多线程

7.1、线程基本知识 进程与线程: 进程(Process)是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构…

cobaltstrike的安装与基础使用

数据来源 本文仅用于信息安全学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。 Cobalt Strike是什么? Cobalt Strike(简称CS)是一款团队作战渗…

Python学习笔记——列表

Python列表函数&方法函数:len(list):列表元素个数max(list):返回列表元素最大值min(list):返回列表元素最小值list(seq):将元组转换为列表方法list.append(obj):在列表末尾添加新的对象list.count(obj)…

字典树总结

字典树 一、概念 字典树 (Trie) 是一种用于实现字符串快速存储和检索的多叉树结构; Trie 的每个节点都拥有若干个字符指针,若在插入或检索字符串时扫描到一个字符 ccc ,就沿着当前节点的 ccc 字符指针,走向该指针指向的节&…

支持向量机(SVM)入门(六,解决遗留问题)

但也出现了如下结果,看来任务没完没了(svm深似海?),还得下功夫:前面我们的支持向量机到此便止步了,一晃两年,这几天有空,顺便研究了一下,问题有进展&#xff…

基于yolov5-v7.0开发构建汽车车损实例分割检测识别分析系统

在之前的文章中我们已经做了很多基于yolov5完成实例分割的项目,感兴趣的话可以自行移步阅读:《基于YOLOv5-v7.0的药片污染、缺损裂痕实例分割检测识别分析系统》《基于yolov5-v7.0开发构建裸土实例分割检测识别模型》《基于yolov5-v7.0开发实践实例分割模…

NSThead的进阶使用和简单探讨

概述 NSThread类是一个继承于NSObjct类的轻量级类。一个NSThread对象就代表一个线程。它需要管理线程的生命周期、同步、加锁等问题,因此会产生一定的性能开销。 使用NSThread类可以在特定的线程中被调用某个OC方法。当需要执行一个冗长的任务,并且不想…

文件minio进阶 分页查询

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、minio使用二、代码1.mino版本是最新的,那么pom中也要最新的2. 部分代码总结前言 就是现在通过minio管理文件,然后不需要其他信息,所以我也就没有用传统方式…

探究视频标注如何支持自动驾驶汽车

自动驾驶汽车技术有望使我们的道路更安全,同时提高运输和交付服务的效率。安全性和可靠性是自动驾驶汽车广泛采用所必需的关键因素。为了保证汽车在现实复杂的交通条件下导航能够有效运行,必须使用标注数据来训练基于计算机视觉的模型,这些数…

verilog学习笔记- 10)按键控制 LED 灯实验

目录 简介: 实验任务: 硬件设计: 程序设计: 下载验证 : 总结与反思: 简介: 按键开关是一种电子开关,属于电子元器件类。我们的开发板上有两种按键开关:第一种是本实…

NeRF制作数据集最后的踩坑

之前对数据集渲染的时候一直出现模糊的问题: 学长说可能是摄像机和poses没有对应。但是为什么会这样呢 后来我发现,确实在制作的过程中,某一步出了问题,导致下标的数字,跟理想的不一样: 原来的12&#xf…

基于yolov5-v7.0开发构建工业机械齿轮瑕疵实例分割检测识别分析系统

在之前的文章中我们已经做了很多基于yolov5完成实例分割的项目,感兴趣的话可以自行移步阅读:《基于YOLOv5-v7.0的药片污染、缺损裂痕实例分割检测识别分析系统》《基于yolov5-v7.0开发构建裸土实例分割检测识别模型》《基于yolov5-v7.0开发实践实例分割模…

深度学习PyTorch 之 DNN-回归(多变量)

深度学习&PyTorch 之 DNN-回归中使用HR数据集进行了实现,但是HR数据集中只有一个变量,这里我们使用多变量在进行模拟一下 流程还是跟前面一样 #mermaid-svg-LN8ayy7UjtqZ6dSj {font-family:"trebuchet ms",verdana,arial,sans-serif;font…

计算机原理三_进程管理

目录儿四、进程管理4.1 什么是进程4.1.1 进程的结构4.1.2 进程的特征4.1.3 进程与线程4.1.4 线程的实现方式用户级线程内核支持线程组合线程的调度4.2 进程是怎么运行的4.2.1 进程状态4.2.2 进程控制4.2.2.1 原语的概念4.2.2.2 挂起与激活4.2.3 进程调度4.2.3.1 调度层次4.2.3.…