小研究 - 基于 MySQL 数据库的数据安全应用设计(一)

信息系统工程领域对数据安全的要求比较高,MySQL 数据库管理系统普遍应用于各种信息系统应用软件的开发之中,而角色与权限设计不仅关乎数据库中数据保密性的性能高低,也关系到用户使用数据库的最低要求。在对数据库的安全性进行设计时,为了保证数据的安全性和可靠性,提出通过设置角色和权限实现对数据的安全访问,然后通过编写代码进行实验,以验证此方式解决数据库中数据安全问题的有效性。

目录

1 存放用户账户的权限表

2 账户和账户权限设计

2.1 从 Windows 命令行登录到 MySQL 数据库中

2.2 创建用户并赋予权限


在当今大数据时代,各行各业都离不开计算机信息技术,特别是利用信息系统应用软件对业务进行处理,系统后台会存放大量数据,这也使得数据变得越来越重要,而作为数据的主要存储器之一的数据库管理系统就承担起了保护数据的重要角色。在开发信息系统过程中,对数据库中数据的安全设计必须给予重视,才能提高数据的安全性。

目前主流的数据库管理系统有 Oracle、SQL Server、MySQL等,任何一个数据库都要考虑数据安全方面的设计,此文以 MySQL 数据库管理系统为例对数据安全进行论述,其中一类安全问题是指数据库中敏感数据被多个合法用户查询获取,在使用过程中发生泄密事故或恶意篡改,数据库管理员需要追踪和熟悉哪些用户曾访问数据以及这些用户的访问权限和操作,用于解决相关事故责任。

对数据库中存放的关键数据,基本上都有保密要求,即限制部分用户对数据的访问,在访问的过程中也会限制用户的访问权限,不同用户根据角色的不同,管理员要设置不同的访问权限,以保证数据库中数据的安全。

1 存放用户账户的权限表

为了方便管理员管理用户,需要为众多用户设置账户和访问权限,同时为了方便管理,数据库管理系统设置了重要的表存放账户和权限,在 MySQL 数据库中与用户及权限相关的表主要有 4 个,即 user 表、db 表、tables_priv 表和columns_priv 表。

user 表是最重要的表,包含用户、权限、安全和资源控制 4 类共计 42 个字段,用户包含用户名、主机名和密码。权限共计 29 个,以 _priv 结尾,例如 update_priv 等。针对user 表,里面存放全局级的权限。

db 表是非常重要的表之一,存放为用户指定的某个或某些数据库的操作权限。仅存放用户名、主机名及权限。针对 db 表,里面存放数据库级的权限。

tables_priv 表,用于存放固定数据库下的一个表和多个表的用户和用户权限信息。

columns_priv表,用于存放固定数据库下固定表的一列或多列的用户和用户权限信息。

4 个表均存放用户和权限,具体区别见如表 1 所示。

2 账户和账户权限设计

在 MySQL 数据库管理系统下,账户的创建和验证与其他数据库管理系统有所不同,在单机系统中,为了能够进行验证,数据库设计时,需要在 Windows 命令行下登录才能够进行验证。

2.1 从 Windows 命令行登录到 MySQL 数据库中

登录过程如下:开始—运行—输入cmd,进入Windows命令行 -- 输入参数,即登录命令(MySQL–u 用户名 –h 主机名 –p 密码),第一次登录创建用户账户需要超级管理员root 用户进行登录。

注意事项:登录命令如果执行,必须切换到 MySQL 的安装文件 bin 目录下,因为很多用户在安装 MySQL 时,并没有配置 path 变量,此时,Windows 命令行无法识别命名,所以无法执行。例如C:\Users\Administrator>mysql -u root -hlocalhost–p,错误提示:“mysql”不是内部或外部命令,也不是可运行的程序或批处理文件。

另外,如果 MySQL 服务器未开启,也会显示命令无效,所以也必须保证数据库服务器处于开启的状态。下面是以超级管理员进入 MySQL 数据库管理系统,在第一次创建用户的时候,仅有 root 超级管理员才有权限创建其他用户,输入密码便可以登录到 MySQL 数据库命令行。登录过程如图 1所示。

输入密码,即可进入 MySQL 命令行。代码为:

        c:\wamp\bin\mysql\mysql5.5.24\bin>mysql -u root -hlocalhost -p
        Enter password:-- 此处输入密码,后面出现 MySQL 的欢迎界面和连接所花费的时间等。
        mysql>-- 最终以此命令符出现,此时光标会在 mysql>后面停留,等待输入命令。

2.2 创建用户并赋予权限

在 MySQL 数据库管理系统下,在此建立一个数据库 b和数据库a,在数据库b下建立一个数据表book,并在book数据表中设计一个整型字段 bid 代表图书编号,可以输入一条记录为 1,为了进行验证,再建立一个 book2 数据表,字段和记录可以随意设计,在此利用简单的数据表展示创建用
户账户并赋予权限的过程。部分代码为:

        Create database a;
        Create database b;
        create table book(bidint);
        insert into book values(1);
        create table book2(bidint,bname char(4));

下面设计第一个用户 a1,密码为:test1,此用户的权限设计为仅能操作数据库 b,利用如下格式设计代码,即利用 grant 创建新用户,并赋予权限,语法规则:Grant 权限类型 on 数据库 . 数据表 to 用户名 @ 主机名 identifiedby password[,user@host identified by password][with grantoption]。注意:权限类型表示赋予用户的权限类型(例如:select、alter、reload、excute、event 等),数据库 . 数据表代表权限的级别,一个 * 代表当前数据库中的所有表,*.*代表所有数据库下的所有表,db_name.* 代表固定数据库中的所有表,db_name.tbl_name代表固定数据库中的固定表和视图,db_name.routine_name代表固定数据库中的固定存储过程和函数,user@host 代表用户名和主机名,password 代表密码,而[with grant option] ]则代表该用户可以对其他用户赋予权限,其他命令为固定写法。此代码为:

        grant all on b.* to'a1'@'localhost'identified by'test1';

具体代码即执行过程如图 2 所示。

下面设计第二个用户 a2,密码为:test2,设计权限为仅能查看数据库 b 下的 book 表,此代码为:
        grant select on b.book to'a2'@'localhost'identified by'test2';

具体代码即执行过程如图 3 所示。

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

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

相关文章

华为OD机试真题 Java 实现【快速人名查找】【2023 B卷 200分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…

促科技创新:高德数据优化篇之OceanBase最佳实践

本文作者: 振飞(高德地图总裁) 炳蔚(高德技术服务平台负责人) 福辰(高德服务端架构师) 背景 高德成立于2002年,是中国领先的移动数字地图、导航及实时交通信息服务提供商&#xff0c…

轻量级容器管理工具 Containerd

1. 轻量级容器管理工具 Containerd 2. Containerd的两种安装方式 3. Containerd容器镜像管理 4. Containerd数据持久化和网络管理 1. 前言 早在2016年3月,Docker 1.11的Docker Engine里就包含了containerd,而现在则是把containerd从Docker Engine里彻底…

Stable Diffusion 硬核生存指南:WebUI 中的 CodeFormer

本篇文章聊聊 Stable Diffusion WebUI 中的核心组件,强壮的人脸图像面部画面修复模型 CodeFormer 相关的事情。 写在前面 在 Stable Diffusion WebUI 项目中,源码 modules 目录中,有一个有趣的目录叫做 CodeFormer,它就是本文的…

C++ 学习系列 1 -- 左值、右值与万能引用

1. 何为左值&#xff1f;何为右值&#xff1f; 简单的说&#xff0c;左值可以放在等号的左边&#xff0c;右值可以放在等号的右边。 左值可以取地址&#xff0c;右值不能取地址。 1.1 左值举例&#xff1a; 变量、函数或数据成员返回左值引用的表达式 如 x、x 1、cout <…

chatgpt 接口使用(一)

使用api实现功能 参考链接&#xff1a;https://platform.openai.com/examples 安装库&#xff1a; pip3 install openai 例如&#xff1a; import os import openaiopenai.api_key os.getenv("OPENAI_API_KEY") response openai.ChatCompletion.create(model&q…

HIVE学习

1.什么是HIVE 1.HIVE是什么? Hive是由Facebook开源&#xff0c;基于Hadoop的一个数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张表&#xff0c;并提供类SQL查询功能。 大白话: HIVE就是一个类似于Navicat的可视化客户端, 2.HIVE本质 Hive是一个Hadoop客户端&a…

动手学深度学习—深度学习计算(层和块、参数管理、自定义层和读写文件)

目录 1. 层和块1.1 自定义块1.2 顺序块1.3 在前向传播函数中执行代码 2. 参数管理2.1 参数访问2.1.1 目标参数2.1.2 一次性访问所有参数2.1.3 从嵌套块收集参数 2.2 参数初始化2.2.1 内置初始化2.2.2 自定义初始化 2.3 参数绑定 3. 自定义层3.1 不带参数的层3.2 带参数的层 4. …

AI介绍——chat gpt/文心一言/claude/bard/星火大模型/bing AI

AI体验 1. AI 介绍&#xff08;注册和使用&#xff09;1.1 Chat GPT1.2 文心一言1.3 Slack 上的 Claude1.3.1 Claude 介绍1.3.2 Claude 使用 1.4 Google的Bard1.4.1 Bard 介绍1.4.2 Bard 使用 1.5 科大讯飞的星火大模型1.5.1 星火大模型 介绍1.5.2 星火大模型 使用 1.6 new bin…

【100天精通python】Day23:正则表达式,基本语法与re模块详解示例

目录 专栏导读 1 正则表达式概述 2 正则表达式语法 2.1 正则表达式语法元素 2.2 正则表达式的分组操作 3 re 模块详解与示例 4 正则表达式修饰符 专栏导读 专栏订阅地址&#xff1a;https://blog.csdn.net/qq_35831906/category_12375510.html 1 正则表达式概述 python 的…

使用 GitHub Copilot 进行 Prompt Engineering 的初学者指南(译)

文章目录 什么是 GitHub Copilot ?GitHub Copilot 可以自己编码吗&#xff1f;GitHub Copilot 的底层是如何工作的&#xff1f;什么是 prompt engineering?这是 prompt engineering 的另一个例子 使用 GitHub Copilot 进行 prompt engineering 的最佳实践提供高级上下文&…

栈和内存溢出

7 栈 线程运行需要的内存空间。 一个栈内由多个栈帧组成&#xff0c;一个栈帧代表一次方法的调用。 栈帧&#xff1a;每个方法运行时需要的内存。 方法内&#xff1a;参数&#xff0c;局部变量&#xff0c;返回地址。方法执行结束&#xff0c;出栈。 方法一调用了方法二。 方法…

【数据挖掘torch】 基于LSTM电力系统负荷预测分析(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【沁恒蓝牙mesh】CH58x系统时钟配置与计算

本文主要记录了【沁恒蓝牙mesh】CH58x系统时钟配置与计算 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是喜欢记录零碎知识点的小菜鸟。&#x1f60e;&#x1f4dd; 个人主页&#xff1a;欢迎访问我的 Ethernet_Comm 博客主页&#x1f525;&#x1f389; 支持我&am…

[Flask]SSTI1

根据题目提示&#xff0c;这关应该是基于Python flask的模版注入&#xff0c;进入靶场环境后就是一段字符串&#xff0c;而且没有任何提示&#xff0c;有点难受&#xff0c;主要是没有提示注入点 随机尝试一下咯&#xff0c;首先尝试一下guest&#xff0c;GET传参 但是没有反应…

Windows上安装 jdk 环境并配置环境变量 (超详细教程)

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

Kali中AWD靶机环境搭建

Kali中AWD靶机环境搭建 1、kali安装docker2、克隆项目&#xff08;400多M&#xff0c;下载会有点久&#xff09;3、进入项目4、下载镜像5、改镜像名6、比赛环境搭建6.1 启动靶机6.2 连接裁判机&#xff0c;启动check脚本6.3 关闭环境命令 7、 靶机访问方式7.1 web界面访问7.2 s…

C++数据结构之平衡二叉搜索树(一)——AVL的实现(zig与zag/左右双旋/3+4重构)

本文目录 00.BBST——平衡二叉搜索树01.AVL树02.AVL的插入2.1单旋——zig 与 zag2.2插入节点后的单旋实例2.3手玩小样例2.4双旋实例2.5小结 03.AVL的删除3.1单旋删除3.2双旋删除3.3小结 04.34重构05.综合评价AVL5.1优点5.2缺点 06.代码注意插入算法删除算法完整代码&#xff1a…

spring security + oauth2 使用RedisTokenStore 以json格式存储

1.项目架构 2.自己对 TokenStore 的 redis实现 package com.enterprise.auth.config;import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis…

基于SpringBoot+Vue的漫画网站设计与实现(源码+LW+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…