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;
-- 撤销权限

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

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

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

相关文章

001,函数指针是一种特殊的指针,它指向的是一个函数地址,可以存储函数并作为参数传递,也可以用于动态绑定和回调函数

函数指针是一种特殊的指针 001,函数指针是一种特殊的指针,它指向的是一个函数地址,可以存储函数并作为参数传递,也可以用于动态绑定和回调函数 文章目录 函数指针是一种特殊的指针前言总结 前言 这是ai回答的标准答案 下面我们…

set的应用(C++)

set的使用 【基本用法】 大家可以敲一下这段代码体会一下set的基本初始化和使用 #include <iostream> #include <set> #include <vector> using namespace std;int main() {set<int> st1; // 空的set// 使用迭代器构造string str("abcdef"…

element-ui输入框如何实现回显的多选样式?

废话不多说直接上效果&#x1f9d0; 效果图 <template><div><el-form:model"params"ref"queryForm"size"small":inline"true"label-width"68px"><el-form-item label"标签" prop"tag&q…

常用SQL语句(基础篇)

前言 查询的sql的结构是 select...from...where...group by...having...order by...limit... 写查询sql的时候需要按照如下顺序写 from&#xff0c;where&#xff08;and&#xff0c;or&#xff0c;&#xff01;&#xff09;&#xff0c;group by&#xff0c;select&#xf…

如何在忘记密码的情况下解锁Android手机?

您的 Android 设备密码有助于保护您的数据并防止您的个人信息被滥用。但是&#xff0c;如果您被锁定在Android设备之外怎么办&#xff1f;我们知道忘记您的 Android 手机密码是多么令人沮丧&#xff0c;因为它会导致您的设备和数据无法访问。在本技术指南中&#xff0c;我们将向…

CSRF靶场通关合集

目录 前言 CSRF漏洞总结 1.PiKachu靶场 1.1CSRF(get) 1.2 CSRF(post)请求 1.3 CSRF Token 2.DVWA靶场 难度低 难度中 难度高 前言 最近系统的将从web渗透到内网渗透的知识点做一个回顾,同时结合一些实战的案例来演示,下面是对刚开始学习时对靶场的一个总结. CSRF漏洞…

快手大模型首次集体亮相 获《焦点访谈》报道关注

7月6日,2024世界人工智能大会暨人工智能全球治理高级别会议在上海闭幕。 据央视《焦点访谈》报道,今年的大会展览持续扩容升级,展览规模、参展企业数、亮点展品数、首发新品数均创历史新高。大会聚焦大模型、算力、机器人、自动驾驶等重点领域,集中展示了一批“人工智能”创新…

流程表单设计器开源优势多 助力实现流程化!

实现流程化办公是很多职场企业的发展目标。应用什么样的软件可以实现这一目的&#xff1f;低代码技术平台、流程表单设计器开源的优势特点多&#xff0c;在推动企业降本增效、流程化办公的过程中作用明显&#xff0c;是理想的软件平台。那么&#xff0c;流程表单设计器开源的优…

开发个人Go-ChatGPT--5 模型管理 (二)

开发个人Go-ChatGPT–5 模型管理 (二) ChatGPT 这是该项目的最终效果&#xff0c;使用ollama的open-webui进行人与机器的对话功能&#xff0c;对话的后端服务则完全对接自己开发的Go项目。 如何实现呢&#xff1f;则通过这篇文章&#xff0c;一一给大家剖析后端的原理及功能…

Apache Seata配置管理原理解析

本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 Apache Seata配置管理原理解析 说到Seata中的配置管理&#xff0c;大家可能会想到Seata中适配…

c++ word转换为pdf

在windows系统下&#xff0c;使用QAxObject效果是最好的 转60多兆的文件速度还是可以的&#xff0c;不建议使用多线程&#xff0c;因为多线程会多次调用转换函数&#xff0c;导致程序一直运行&#xff0c;只有全部转换完成后&#xff0c;程序才能继续向下运行&#xff0c;但是c…

dependencyManagement的作用、nacos的学习

使用SpringCloudAlibaba注意各组件的版本适配 SpringCloudAlibaba已经包含了适配的各组件&#xff08;nacos、MQ等&#xff09;的版本号&#xff0c;也是一个版本仲裁者&#xff0c;但是可能已经有了父项目Spring-Boot-Starter-Parent这个版本仲裁者&#xff0c;又不能加多个父…

three.js实现3D模型任意方向旋转

因为业务需要&#xff0c;我们在公司官网使用Three.js实现了可鼠标拖动任意旋转的3D旋转模型&#xff0c;可是实现之后发现除了Z轴方向都可以任意旋转&#xff0c;但是Z轴方向最多只能旋转180度。找遍全网也没有找到相关的资料来解释错在了哪一步&#xff0c;最终还是在github仓…

IT之家最新科技热点 | 小米 AI 研究院开创多模态通用模型

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

hive表小练习

-- 将对应的命令写在每个步骤中 -- 1.在hive中创建数据库school create database if not exists school; -- 2.在数据库school中创建如下的表 每张表的列分隔符都是, 存储格式是textfile 创建表名为student_info, 字段为stu_id 类型为string,注释为学生id 字段为stu_name 类…

PostgreSQL 如何优化存储过程的执行效率?

文章目录 一、查询优化1. 正确使用索引2. 避免不必要的全表扫描3. 使用合适的连接方式4. 优化子查询 二、参数传递1. 避免传递大对象2. 参数类型匹配 三、减少数据量处理1. 限制返回结果集2. 提前筛选数据 四、优化逻辑结构1. 分解复杂的存储过程2. 避免过度使用游标 五、事务处…

STM32快速复习(八)SPI通信

文章目录 前言一、SPI是什么&#xff1f;SPI的硬件电路&#xff1f;SPI发送的时序&#xff1f;二、库函数二、库函数示例代码总结 前言 SPI和IIC通信算是我在大学和面试中用的最多&#xff0c;问的最多的通信协议 IIC问到了&#xff0c;一般SPI也一定会问到。 SPI相对于IIC多了…

Apache Seata分布式事务原理解析探秘

本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 前言 fescar发布已有时日&#xff0c;分布式事务一直是业界备受关注的领域&#xff0c;fesca…

批量文本编辑管理神器:一键修改多处内容,轻松转换编码,助力工作效率飞跃提升!

在信息爆炸的时代&#xff0c;文本处理已成为我们日常工作中不可或缺的一部分。无论是处理文档、整理数据还是编辑资料&#xff0c;都需要对大量的文本进行管理和修改。然而&#xff0c;传统的文本编辑方式往往效率低下&#xff0c;容易出错&#xff0c;难以满足现代工作的高效…

水箱高低水位浮球液位开关

水箱高低水位浮球液位开关概述 水箱高低水位浮球液位开关是一种用于监测和控制水箱中液位的自动化设备&#xff0c;它能够在水箱液位达到预设的高低限制时&#xff0c;输出开关信号&#xff0c;以控制水泵或电磁阀的开闭&#xff0c;从而维持水箱液位在一个安全的范围内。这类设…