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 授予权限
数据库存在于主机中,可以创建不同的连接来操作数据库。不同的连接对应不同的用户,每个用户具有不同的权限。

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

该新连接的用户名和密码采用创建的用户名和密码。 - 测试用户数据库
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快速点击,发生多次触发 2.代码示例: //html<el-button :loading"submitLoading" type"primary" click"submitForm">确 定</el-button>data() {return {submitLoading:false,}}//方法/** 提交按钮 */sub…...
助力游戏实现应用内运营闭环,融云游戏社交方案升级!
通信能力在所有应用场景都是必备组件,这源于社交属性带给应用的增长神话。 在游戏场景,玩家从少数核心向大众用户泛化扩展的过程,就是游戏深度融合社交能力的过程。 从单机到联机,游戏乐趣的升级 1996 年,游戏界顶流…...
守护创新之魂:源代码防泄漏的终极策略
在信息化快速发展的今天,企业的核心机密数据,尤其是源代码,成为了企业竞争力的关键所在。然而,源代码的泄露风险也随之增加,给企业的安全和发展带来了巨大威胁。在这样的背景下,SDC沙盒作为一种创新的源代码…...
Halcon 基于分水岭的目标分割
一 分水岭 1 分水岭介绍 传统的分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是地质学上的拓扑地貌,图像中每一像素的灰度值表示该点的海拔高度,每一个局部极小值及其周边区域称为集水盆地&…...
PHP 面向对象编程(OOP)入门指南
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,通过使用对象来设计和组织代码。PHP作为一种广泛使用的服务器端脚本语言,支持面向对象编程。本文将介绍PHP面向对象编程的基本概念和用法࿰…...
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核心代码解释: class"power-station-perspective-item-text": 为这个 span 元素添加了一个 CSS 类,以便对其样式进行定义。 click"clickItem(item.id)": 这是一个 Vue 事件绑定。当用户点…...
深入理解Vue生命周期钩子函数
深入理解Vue生命周期钩子函数 Vue.js 是一款流行的前端框架,通过其强大的响应式数据绑定和组件化的开发方式,使得前端开发变得更加简单和高效。在Vue应用中,每个组件都有其生命周期,这些生命周期钩子函数允许开发者在不同阶段执行…...
Linux-gdb
目录 1.-g 生成含有debug信息的可执行文件 2.gdb开始以及gdb中的常用执行指令 3.断点的本质用法 4.快速跳出函数体 5.其他 1.-g 生成含有debug信息的可执行文件 2.gdb开始以及gdb中的常用执行指令 3.断点的本质用法 断点的本质是帮助我们缩小出问题的范围 比如,…...
Oracle分析表和索引(analyze)
分析表 analyze table tablename compute statistics; 分析索引 analyze index indexname compute statistics; 该语句生成的统计信息会更新user_tables这个视图的统计信息,分析的结果被Oracle用于基于成本的优化生成更好的查询计划 对于使用CBO(Cost-Base Optimization)很有好…...
MyBatis踩坑记录-多表关联字段相同,字段数据覆盖问题
MyBatis踩坑记录-多表关联字段相同,字段数据覆盖问题 1. 背景描述2. 实体记录3. 错误映射3.1 造成的影响 4. 解决办法4.1 修改映射文件 5. 修复后的效果5.1 返回的数据5.2 正确展示 7. end ~ 1. 背景描述 现有一下业务,单个任务下可能会有多个子任务&am…...
昇思25天学习打卡营第6天|数据变换 Transforms
学习目标:熟练掌握数据变换操作 熟悉mindspore.dataset.transforms接口 实践掌握常用变换 昇思大模型平台学习心得记录: 一、关于mindspore.dataset.transforms 1.1 变换 mindspore.dataset.transforms.Compose将多个数据增强操作组合使用。 mindspo…...
在线JSON可视化工具--改进
先前发布了JSON格式化可视化在线工具,提供图形化界面显示结构关系功能,并提供JSON快速格式化、JSON压缩、快捷复制、下载导出、对存在语法错误的地方能明确显示,而且还支持全屏,极大扩大视野区域。 在线JSON格式化可视化工具 但…...
探讨命令模式及其应用
目录 命令模式命令模式结构命令模式适用场景命令模式优缺点练手题目题目描述输入描述输出描述题解 命令模式 命令模式是一种行为设计模式, 它可将请求转换为一个包含与请求相关的所有信息的独立对象。 该转换让你能根据不同的请求将方法参数化、 延迟请求执行或将其…...
1、音视频解封装流程---解复用
对于一个视频文件(mp4格式/flv格式),audio_pkt或者video_pkt是其最基本的数据单元,即视频文件是由独立的视频编码包或者音频编码包组成的。 解复用就是从视频文件中把视频包/音频包单独读取出来保存成独立文件,那么如何得知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会下载对应的依赖包,如果下载不了的话&a…...
从STM32迁移到普冉PY32F003:UART代码移植保姆级教程(附HAL库对比)
从STM32到普冉PY32F003的UART代码迁移实战指南 1. 国产MCU替代浪潮下的技术选择 近年来,半导体行业的供应链波动促使更多工程师将目光投向国产MCU解决方案。普冉PY32F003系列作为Cortex-M0内核的代表产品,以48MHz主频、64KB Flash和8KB RAM的配置&#x…...
软阴影:那个让虚拟世界“温柔起来“的光影小秘密
一、从一只小猫的影子说起 前几天我在朋友家做客,他家养了一只胖乎乎的橘猫,正趴在阳台的窗边晒太阳。我无意间瞥了一眼那只猫脚边的影子,突然被一个细节震撼了—— 那只猫的影子——并不是一片均匀的黑。 仔细看——猫肚子紧贴地板的地方——…...
OpenClaw 连接阿里云百炼图文教程
OpenClaw 连接阿里云百炼图文教程 前置准备 已安装并可以正常打开 OpenClaw Windows。 OpenClaw 顶部 Gateway 状态保持在线。 已准备好可正常登录的阿里云账号。 可以正常访问阿里云百炼登录地址:https://bailian.console.aliyun.com/cn-beijing#/home 建议提…...
为什么92%的DeepSeek二次开发团队在6个月内遭遇交付延迟?——基于17个真实项目的技术债务归因分析
更多请点击: https://intelliparadigm.com 第一章:为什么92%的DeepSeek二次开发团队在6个月内遭遇交付延迟?——基于17个真实项目的技术债务归因分析 在对17个采用DeepSeek-R1/VL模型开展定制化开发的工业级项目进行回溯审计后,我…...
[智能体-81]:工程化智能体 = 模型做脑力拆解 + 框架做流程落地。前者是决策者,后者是管理者,tools/function call是内部员工;mcp server是外部资源;
一、全角色人设 & 对应技术组件角色定位对应技术模块核心职责决策者(脑力大脑)大模型 LLM理解目标、任务拆解、逻辑判断、分支决策、内容生成,负责 “想方案、定步骤”管理者(流程总管)智能体编排框架(…...
厨房空调技术白皮书:从风冷到水冷,制冷系统在厨房场景中的工程化演进
厨房空调是暖通行业近三年技术迭代最密集的细分品类。从最初的"凉霸"(本质是风扇),到风冷分体式,再到水冷一体式,每代技术都在解决上一代没有覆盖的用户痛点。本文以工程技术视角,梳理四代厨房制…...
基于雷达与光敏传感器的低功耗智能窗防设备设计与实现
1. 项目概述:一个基于雷达与光敏的智能窗防设备几年前,我因为一次短暂的出差,家里空置了几天,回来后就一直琢磨着怎么给家里的窗户加点“动静”。市面上的智能安防摄像头固然好,但要么需要复杂的布线,要么云…...
约束感知图缩减算法在量子优化中的应用
1. 约束感知图缩减算法概述在量子计算领域,资源受限一直是制约算法实际应用的主要瓶颈。以当前主流的超导量子计算机为例,其量子比特数通常在50-100个之间,且存在显著的噪声干扰。这种硬件限制使得许多经典优化问题难以直接映射到量子设备上求…...
XZ6128A工作电压5-100V 输出电流5A 升压型大功率LED灯恒流驱动控制芯片
概述 XZ6128A是一款高效率、高精度的升压型大功率LED灯恒流驱动控制芯片。 XZ6128A内置高精度误差放大器,固定关断时间控制电路,恒流驱动电路等,特别适合大功率、多个高亮度LED灯串的恒流驱动。 XZ6128A采用固定关断时间的控制方式࿰…...
Windows安卓应用安装终极指南:5分钟快速配置跨平台应用体验
Windows安卓应用安装终极指南:5分钟快速配置跨平台应用体验 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为在Windows电脑上无法直接安装安卓应用而烦…...
