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

MySQL:保护数据库

保护数据库

  • 1. 用户
    • 1.1 创建用户
    • 1.2 查看用户
    • 1.3 删除用户
    • 1.4 修改密码
  • 2. 权限
    • 2.1 授予权限
    • 2.2 查看权限
    • 2.3 撤销权限

之前都是介绍本地数据库而你自己就是数据库的唯一用户,所以不必考虑安全问题。但实际业务中数据库大多放在服务器里,你必须妥善处理好用户账户和权限的问题,合理决定谁拥有什么程度的权限以防止对数据的破坏和误用。因此应该知道如何增强数据库的安全性。

1. 用户

1.1 创建用户

目前为止我们一直使用的是 root 用户帐户,这是在安装 MySQL 时就设置的根账户。
在生产环境中我们需要创建新用户并合理分配权限。
例如,你有一个应用程序及其相关联的数据库,你要让使用你应用程序的用户拥有读写数据的权限,但他们不应该有改变数据库结构的权限,如创建和删除一张表,否则会出大问题。又如,你新招了一个DBA(数据库管理员),你需要给他新建一个账户,让他可以访问一个或多个数据库乃至整个MySQL服务器。

  • 创建用户
    设置一个新用户,用户名为 john,可以选择用 @ 来限制他可以从哪些地方访问数据库(可以是主机名、IP地址、域名)
CREATE USER john;
-- 无限制,可以从任何位置访问
CREATE USER john@127.0.0.1;
-- 限制IP地址,可以是特点电脑,也可以是特定网络服务器web server
CREATE USER john@localhost;
-- 限制主机名,特定电脑
CREATE USER john@'codewithmosh.com';
-- 限制域名(不加试验也可以),可以是该域名内的任何电脑,但子域名则不行
CREATE USER john@'%.codewithmosh.com';
-- 加上了通配符,可以是该域名及其子域名下的任何电脑-- 可以用IDENTIFIED BY来设置密码
CREATE USER john IDENTIFIED BY '1234';
-- 可以从任何地方访问,设置密码为1234

1.2 查看用户

  • 方法1:采用代码
    在自动创建的名为mysql的数据库中(隐藏),有个user表记录了账户信息,查询即可:
SELECT * FROM mysql.user

在这里插入图片描述
除了john和root帐户,还有几个MySQL内部自动建立和使用的帐户(用户名均为 mysql.*)。
Host 字段表示用户可以从哪里访问数据库,john 是一个通配符 %,表示他可以从任意位置访问数据库,其它几个用户都是 localhost,表示都只能从本电脑访问数据库,不能从远程连接访。

  • 方法2:直接从左侧导航栏中的Administration标签页里的Users and Privileges, 同样可以查看服务器上的用户列表和信息。

1.3 删除用户

NOTE:记得总是即使删除掉组织中那些不用的账户。

DROP USER john@codewithmosh.com
-- 删除用户名

1.4 修改密码

  • 方法1:用SET语句
SET PASSWORD FOR john = '1234';
-- 修改john的密码
SET PASSWORD = '1234';
-- 修改当前登录账户的密码
  • 方法2:直接从左侧导航栏中的Administration标签页里的Users and Privileges,点击用户john,可修改其密码,最后Apply。或者点击’Expire Password’强制其密码过期,下次用户登录必须修改密码。

2. 权限

2.1 授予权限

数据库存在于主机中,可以创建不同的连接来操作数据库。不同的连接对应不同的用户,每个用户具有不同的权限。
在这里插入图片描述

  • 用户创建和权限授予过程(这个过程可以在管理员连接中完成),对于网页或桌面应用程序的使用用户,给予其读写数据的权限,但禁止其增删表或修改表结构。
  1. 创建用户
    例如,我们有个叫作moon的应用程序,我们给这个应用程序建个用户帐户名为moon_app(app指明这代表的是整个应用程序而非一个人)。
CREATE USER moon_app IDENTIFIED BY '1234';
  1. 授予用户权限
    给予其对sql_store数据库增删查改以及执行储存过程(EXECUTE)的权限,这是给终端用户常用的权限配置。
GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE
-- GRANT子句表名授予那些权限,ALL代表所有权限
ON sql_store.*
-- ON子句表明可访问那些数据库和表
-- sql_store.*表示可以访问sql_store下所有表
-- *.*表示可以访问所有数据库的所有表
TO moon_app;
-- 表示授予那些用户
  1. 建立新连接
    在这里插入图片描述
    该新连接的用户名和密码采用创建的用户名和密码。
  2. 测试用户数据库
USE sql_store;
SELECT *
FROM customers;
-- 正常使用
USE sql_invoicing;
-- 用sql_invoicing会报错

在这里插入图片描述

Note:可以搜索 MySQL privileges,第一个结果就是官方文档里罗列的所有可用的权限及含义,其中的ALL是最高权限,通常我们给予管理员ALL权限。

2.2 查看权限

两种方法:SQL语句和导航菜单。

  • 方法1:
SHOW GRANTS;
-- 查看当前登录账户的权限
SHOW GRANTS FOR john;
-- 查看john账户的权限

可以看到,当前 root 帐户拥有最高权限,除了ALL的所有权限,还有另外一个叫 PROXY 的权限。感觉root帐户和john这样的DBA帐户的区别就跟群主和群管理员的区别一样。

  • 方法2:通过导航栏Administration标签页里的Users and Privileges来查看各用户的权限。

在这里插入图片描述

2.3 撤销权限

GRANT CREATE VIEW
ON sql_store.*
TO moon_app;
-- 授予权限
REVOKE CREATE VIEW
ON sql_store.*
FROM moon_app;
-- 撤销权限

不要给予一个账户过多权限,总是给予他所必须的最小权限,不然就在系统中创造了太多的安全漏洞。

相关文章:

MySQL:保护数据库

保护数据库 1. 用户1.1 创建用户1.2 查看用户1.3 删除用户1.4 修改密码 2. 权限2.1 授予权限2.2 查看权限2.3 撤销权限 之前都是介绍本地数据库而你自己就是数据库的唯一用户,所以不必考虑安全问题。但实际业务中数据库大多放在服务器里,你必须妥善处理好…...

不是大厂云用不起,而是五洛云更有性价比

明月代维的一个客户的大厂云境外云服务器再有几天就到期了,续费提醒那是提前一周准时到来,但是看到客户发来的续费价格截图,我是真的没忍住。这不就是在杀熟吗?就这配置续费竟然如此昂贵?说实话这个客户的服务器代维是…...

C++初学者指南-3.自定义类型(第一部分)-异常

C初学者指南-3.自定义类型(第一部分)-异常 文章目录 C初学者指南-3.自定义类型(第一部分)-异常简介什么是异常?第一个示例用途:报告违反规则的行为异常的替代方案标准库异常处理 问题和保证资源泄露使用 RAII 避免内存泄漏!析构函数:不要让异…...

学会python——用python编写一个电子时钟(python实例十七)

目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.电子时钟程序 3.1 代码构思 3.2代码实例 3.3运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性…...

elementui中@click短时间内多次触发,@click重复点击,做不允许重复点击处理

click快速点击&#xff0c;发生多次触发 2.代码示例&#xff1a; //html<el-button :loading"submitLoading" type"primary" click"submitForm">确 定</el-button>data() {return {submitLoading:false,}}//方法/** 提交按钮 */sub…...

助力游戏实现应用内运营闭环,融云游戏社交方案升级!

通信能力在所有应用场景都是必备组件&#xff0c;这源于社交属性带给应用的增长神话。 在游戏场景&#xff0c;玩家从少数核心向大众用户泛化扩展的过程&#xff0c;就是游戏深度融合社交能力的过程。 从单机到联机&#xff0c;游戏乐趣的升级 1996 年&#xff0c;游戏界顶流…...

守护创新之魂:源代码防泄漏的终极策略

在信息化快速发展的今天&#xff0c;企业的核心机密数据&#xff0c;尤其是源代码&#xff0c;成为了企业竞争力的关键所在。然而&#xff0c;源代码的泄露风险也随之增加&#xff0c;给企业的安全和发展带来了巨大威胁。在这样的背景下&#xff0c;SDC沙盒作为一种创新的源代码…...

Halcon 基于分水岭的目标分割

一 分水岭 1 分水岭介绍 传统的分水岭分割方法&#xff0c;是一种基于拓扑理论的数学形态学的分割方法&#xff0c;其基本思想是把图像看作是地质学上的拓扑地貌&#xff0c;图像中每一像素的灰度值表示该点的海拔高度&#xff0c;每一个局部极小值及其周边区域称为集水盆地&…...

PHP 面向对象编程(OOP)入门指南

面向对象编程&#xff08;Object-Oriented Programming&#xff0c;简称OOP&#xff09;是一种编程范式&#xff0c;通过使用对象来设计和组织代码。PHP作为一种广泛使用的服务器端脚本语言&#xff0c;支持面向对象编程。本文将介绍PHP面向对象编程的基本概念和用法&#xff0…...

Django学习第三天

python manage.py runserver 使用以上的命令启动项目 实现新建用户数据功能 views.py文件代码 from django.shortcuts import render, redirect from app01 import models# Create your views here. def depart_list(request):""" 部门列表 ""&qu…...

Vue3实现点击按钮实现文字变色

1.动态样式实现 1.1核心代码解释&#xff1a; class"power-station-perspective-item-text"&#xff1a; 为这个 span 元素添加了一个 CSS 类&#xff0c;以便对其样式进行定义。 click"clickItem(item.id)"&#xff1a; 这是一个 Vue 事件绑定。当用户点…...

深入理解Vue生命周期钩子函数

深入理解Vue生命周期钩子函数 Vue.js 是一款流行的前端框架&#xff0c;通过其强大的响应式数据绑定和组件化的开发方式&#xff0c;使得前端开发变得更加简单和高效。在Vue应用中&#xff0c;每个组件都有其生命周期&#xff0c;这些生命周期钩子函数允许开发者在不同阶段执行…...

Linux-gdb

目录 1.-g 生成含有debug信息的可执行文件 2.gdb开始以及gdb中的常用执行指令 3.断点的本质用法 4.快速跳出函数体 5.其他 1.-g 生成含有debug信息的可执行文件 2.gdb开始以及gdb中的常用执行指令 3.断点的本质用法 断点的本质是帮助我们缩小出问题的范围 比如&#xff0c;…...

Oracle分析表和索引(analyze)

分析表 analyze table tablename compute statistics; 分析索引 analyze index indexname compute statistics; 该语句生成的统计信息会更新user_tables这个视图的统计信息,分析的结果被Oracle用于基于成本的优化生成更好的查询计划 对于使用CBO(Cost-Base Optimization)很有好…...

MyBatis踩坑记录-多表关联字段相同,字段数据覆盖问题

MyBatis踩坑记录-多表关联字段相同&#xff0c;字段数据覆盖问题 1. 背景描述2. 实体记录3. 错误映射3.1 造成的影响 4. 解决办法4.1 修改映射文件 5. 修复后的效果5.1 返回的数据5.2 正确展示 7. end ~ 1. 背景描述 现有一下业务&#xff0c;单个任务下可能会有多个子任务&am…...

昇思25天学习打卡营第6天|数据变换 Transforms

学习目标&#xff1a;熟练掌握数据变换操作 熟悉mindspore.dataset.transforms接口 实践掌握常用变换 昇思大模型平台学习心得记录&#xff1a; 一、关于mindspore.dataset.transforms 1.1 变换 mindspore.dataset.transforms.Compose将多个数据增强操作组合使用。 mindspo…...

在线JSON可视化工具--改进

先前发布了JSON格式化可视化在线工具&#xff0c;提供图形化界面显示结构关系功能&#xff0c;并提供JSON快速格式化、JSON压缩、快捷复制、下载导出、对存在语法错误的地方能明确显示&#xff0c;而且还支持全屏&#xff0c;极大扩大视野区域。 在线JSON格式化可视化工具 但…...

探讨命令模式及其应用

目录 命令模式命令模式结构命令模式适用场景命令模式优缺点练手题目题目描述输入描述输出描述题解 命令模式 命令模式是一种行为设计模式&#xff0c; 它可将请求转换为一个包含与请求相关的所有信息的独立对象。 该转换让你能根据不同的请求将方法参数化、 延迟请求执行或将其…...

1、音视频解封装流程---解复用

对于一个视频文件(mp4格式/flv格式)&#xff0c;audio_pkt或者video_pkt是其最基本的数据单元&#xff0c;即视频文件是由独立的视频编码包或者音频编码包组成的。 解复用就是从视频文件中把视频包/音频包单独读取出来保存成独立文件&#xff0c;那么如何得知packet是视频包还是…...

centos7升级gcc到7.3.0

1、下载gcc-7.3.0源码 wget ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz 2、解压gcc-7.3.0 tar -xvf gcc-7.3.0.tar.gz3、安装依赖 cd gcc-7.3.0 ./contrib/download_prerequisites ./contrib/download_prerequisites会下载对应的依赖包&#xff0c;如果下载不了的话&a…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解&#xff0c;现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...