在 SQL 中,用户管理权限操作是数据库安全管理的核心组成部分,用于控制 “谁能访问数据库” 以及 “能对数据库做什么”。它们共同保障数据库的安全性、完整性和合规性。

一、用户管理:控制 “谁能访问数据库”

用户管理是指对数据库用户的创建、修改、删除等一系列操作,核心是管理 “访问主体”—— 即哪些用户(或程序)有权限连接到数据库。

1. 核心操作
  • 创建用户:定义可登录数据库的账号,指定登录来源(如仅允许本地登录,或允许远程登录)和认证密码。
    例:create user 'dev'@'localhost' identified by 'Dev@123';(创建用户dev,仅允许从本地登录,密码Dev@123)。
  • 修改用户:更新用户密码、登录来源或认证方式(如 MySQL 中修改密码插件)。
    例:alter user 'dev'@'localhost' identified by 'NewDev@456';(修改dev的密码)。
  • 删除用户:移除不再需要的用户,彻底禁止其访问。
    例:drop user 'dev'@'localhost';(删除dev用户)。
2. 用户的构成

一个完整的数据库用户由两部分组成:

  • 用户名:标识用户的唯一名称(如devadmin)。
  • 主机名(或 IP):限制用户的登录来源(如localhost表示仅本地登录,%表示允许任意 IP 远程登录,192.168.1.%表示允许特定网段登录)。

这一设计的目的是限制访问范围,例如:生产库的管理员账号通常仅允许本地登录,避免远程攻击风险。

二、权限操作:控制 “能对数据库做什么”

权限操作是指对用户可执行的数据库操作(如查询、修改、删除数据,创建表等)进行授权或撤销,核心是管理 “访问权限”—— 即用户连接数据库后能执行的具体操作。

1. 权限的类型

数据库权限可按粒度分为多个层级,以 MySQL 为例:

  • 全局权限:对所有数据库生效(如CREATE USER管理用户的权限、SHUTDOWN关闭数据库的权限)。
  • 库级权限:对指定数据库生效(如SELECTINSERTUPDATEDELETE,或ALL所有权限)。
    例:grant select, insert on testdb.* to 'dev'@'localhost';(允许dev查询和插入testdb库的所有表)。
  • 表级权限:对指定表生效(如仅允许操作testdb.user表)。
    例:grant update (name) on testdb.user to 'dev'@'localhost';(仅允许dev修改testdb.user表的name字段)。
  • 字段级权限:对表中特定字段生效(更精细的控制)。
2. 核心操作
  • 授予权限(GRANT:为用户分配指定权限。
    例:grant all on itcast.* to 'heima'@'localhost';(授予heimaitcast库所有表的全部操作权限)。
  • 撤销权限(REVOKE:收回用户已有的权限。
    例:revoke delete on itcast.* from 'heima'@'localhost';(收回heima删除itcast库数据的权限)。
  • 查询权限(SHOW GRANTS:查看用户当前拥有的权限。
    例:show grants for 'heima'@'localhost';(查看heima的权限)。

三、用户管理与权限操作的意义

  1. 保障数据库安全
    防止未授权访问:通过用户管理限制 “谁能登录”,通过权限控制限制 “能做什么”,避免无关人员访问或篡改数据(如禁止普通用户删除核心表)。

  2. 实现职责分离
    不同角色的用户分配不同权限:

    • 开发人员:仅授予查询、插入测试数据的权限,无删除生产数据的权限;
    • 管理员:拥有全局管理权限(如备份、创建用户);
    • 审计人员:仅授予查询日志的权限,无修改数据的权限。
      这种 “最小权限原则” 可减少误操作或恶意操作的风险。
  3. 保护数据完整性
    限制不合理操作:例如禁止普通用户修改表结构(ALTER TABLE),避免因误操作导致表结构损坏;限制字段级权限(如仅允许修改user表的status字段),防止核心字段(如id)被篡改。

  4. 满足合规要求
    许多行业(如金融、医疗)有严格的数据安全法规(如 GDPR、HIPAA),要求记录数据访问日志并限制权限范围。用户管理和权限操作是满足这些法规的基础(例如:仅授权必要人员访问敏感数据,如身份证号、病历)。

  5. 便于管理与审计
    通过用户隔离操作来源:每个操作(如删除数据、修改表结构)都会关联到具体用户,便于出现问题时追溯责任(例如:通过日志定位 “谁删除了订单表数据”)。

总结

用户管理和权限操作是数据库安全的 “双重防线”:

  • 用户管理解决 “身份验证” 问题(确认 “你是谁”);
  • 权限操作解决 “授权控制” 问题(确认 “你能做什么”)。

合理配置这两项操作,能有效降低数据泄露、误操作、恶意攻击的风险,确保数据库长期稳定、安全地运行。

一、用户管理语句(创建、修改用户)

1. 创建本地用户heima
-- 创建用户:用户名'heima',仅允许从本地(localhost)登录,密码'123456'
-- 格式:create user '用户名'@'主机名' identified by '密码';
-- 主机名说明:localhost表示仅本地可登录;%表示任意主机可登录
create user 'heima'@'localhost' identified by '123456';
2. 创建允许远程登录的用户itcast
-- 创建用户:用户名'itcast',允许从任意主机(%表示所有IP)登录,密码'123456'
create user 'itcast'@'%' identified by '123456';
3. 修改用户heima的密码及认证插件
-- 修改用户密码:将'heima'@'localhost'的密码改为'1234',并指定认证插件为mysql_native_password
-- 注意:mysql_native_password是MySQL传统认证插件,兼容旧版本客户端;8.0+默认使用caching_sha2_password
alter user 'heima'@'localhost' identified with mysql_native_password by '1234';

注意事项

  • 主机名%表示允许所有 IP 登录,生产环境中需限制具体 IP 以提高安全性;
  • 密码应符合复杂度要求(如长度、字符组合),避免简单密码;
  • 修改认证插件可能影响客户端连接(需客户端支持对应插件)。

二、权限操作语句

1. 查询用户权限
-- 查看'heima'@'localhost'的所有权限
show grants for 'heima'@'localhost';
2. 授予权限
-- 授予'heima'@'localhost'对itcast数据库下所有表(*)的所有权限(all)
-- 格式:grant 权限列表 on 数据库.表名 to '用户'@'主机';
-- all表示所有权限(如select、insert、update等);itcast.*表示itcast库的所有表
grant all on itcast.* to 'heima'@'localhost';
3. 撤销权限
-- 撤销'heima'@'localhost'对itcast数据库下所有表的所有权限
revoke all on itcast.* from 'heima'@'localhost';

注意事项

  • 权限粒度可控制到库(db.*)、表(db.table)或字段级别;
  • 授予all权限需谨慎,生产环境建议遵循 “最小权限原则”;
  • 撤销权限后,已建立的连接需重新连接才会生效。

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

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

相关文章

计算机视觉案例分享之答题卡识别

目录 一、基本流程 二、代码实现 1. 导入工具包和定义常量 2. 辅助函数定义 2.1 坐标点排序函数 2.2 透视变换函数 2.3 轮廓排序函数 2.4 图像显示函数 3. 主程序处理流程 3.1 图像预处理 3.2 轮廓检测与透视变换 3.3 阈值处理与选项检测 3.4 答案识别与评分 我们…

Java面试问题记录(四)

四、设计模式1、设计模式6大原则1)单一职责(一个类和方法只做一件事)、2)里氏替换(多态,子类可扩展父类)、3)依赖倒置(细节依赖抽象,下层依赖上层)、4)接口隔离(建立单一接口)、迪米特原则(最少知道&#x…

高等教育学

高等教育学第一章 高等教育与高等教育学第二章 高等教育发展史2-1西方高等教育发展史2-2中国高等教育发展史第三章 高等教育理念3.1-王一军-高等教育理念的构成要素3.2-王一军-高等教育理念的主要流派第四章 高等学校教育4.1 高等学校教育制度4.2-陈何芳-高等教育办学体制 &…

unordered_map使用MFC的CString作为键值遇到C2056和C2064错误

文章目录unordered_map使用MFC的CString作为键值遇到C2056和C2064错误问题出现的背景解决方案总结unordered_map使用MFC的CString作为键值遇到C2056和C2064错误 问题出现的背景 在我的一个老工程项目中,使用C的std::unordered_map时,使用了MFC的CStrin…

Maven 本地仓库的 settings.xml 文件

本地仓库目录位置&#xff1a;C:/用户/用户名/.m2/repository 需要修改配置&#xff0c;具体的修改方法请看 ↓↓↓ 2024版 IDEA 用 Maven 创建 java 项目&#xff08;Maven 安装和配置&#xff09; <?xml version"1.0" encoding"UTF-8"?><!…

vue动画内置组件

文章目录vue动画的官方类名EnterLeaveTransition组件注意事项触发实例TransitionGroup组件注意事项触发机制实例拓展vue动画的官方类名 如下来自vue官方文档&#xff0c;提供了dom元素&#xff0c;插入Enter和删除Leave的类名 Enter v-enter-from&#xff1a;进入动画的起始…

软考中级信息安全与病毒防护知识点

### 一、核心知识点梳理这部分内容可以大致分为三个方面&#xff1a;**信息安全基本概念**、**加解密技术** 和 **恶意代码&#xff08;病毒&#xff09;防护**。#### 1. 信息安全的基本目标&#xff08;CIA三元组&#xff09; 这是所有信息安全问题的基石&#xff0c;必须熟练…

数组存储 · 行主序与列主序 | 应用 / 基地址 / 选择策略

注&#xff1a;本文为 “数组存储 行主序与列主序” 相关合辑。 英文引文&#xff0c;机翻未校。 中文引文&#xff0c;略作重排。 未整理去重&#xff0c;如有内容异常&#xff0c;请看原文。 Row major and Column Major Address calculations 按行主序和按列主序的地址计算…

在 CentOS 中安装 VirtualBox 增强功能的步骤

很好&#xff0c;你看到 /run/media/asfor/VBox_GAs_7.2.2&#xff0c;这说明你已经在 VirtualBox 中挂载了“增强功能&#xff08;Guest Additions&#xff09;”光盘&#xff0c;接下来只要手动安装就可以启用共享剪贴板、全屏分辨率、鼠标无缝移动等功能。&#x1f4dd; 在 …

Python快速入门专业版(三十):函数进阶:函数嵌套与作用域(内部函数访问外部变量)

目录引一、函数嵌套&#xff1a;在函数内部定义函数1. 基本语法与调用方式示例1&#xff1a;简单的函数嵌套结构2. 嵌套函数的典型应用&#xff1a;隐藏辅助逻辑示例2&#xff1a;用嵌套函数隐藏辅助逻辑二、嵌套函数的作用域&#xff1a;变量访问规则1. 内部函数访问外部函数的…

C++数组与字符串:从基础到实战技巧

C中的数组和字符串是处理数据集合和文本的基础工具。数组用于存储相同类型的元素集合&#xff0c;而字符串则专门用于处理文本数据。C提供了两种主要的字符串处理方式&#xff1a;C风格字符串&#xff08;字符数组&#xff09;和C的std::string类。 &#x1f4ca; 1. 数组 (Arr…

艾迈斯欧司朗推出首款高功率多芯片激光器封装

在投影显示领域掀起技术革新的浪潮中&#xff0c;艾迈斯欧司朗犹如一位技艺精湛的工匠&#xff0c;精心打造出Vegalas Power系列高功率激光二极管的首颗明珠——PLPM7_455QA激光器。这款采用多颗GaN基功率激光器集成封装的新品&#xff0c;在短脉冲周期内绽放出42W的璀璨光芒&a…

机器视觉中的工业相机接口该如何选择?

工业相机接口&#xff1a;数据传输的“高速公路”&#xff0c;选对了才够快 在机器视觉系统里&#xff0c;工业相机就像“眼睛”&#xff0c;而接口则是连接“眼睛”与“大脑”&#xff08;后端处理系统&#xff09;的“高速公路”。这条“路”的宽窄、长短、抗干扰能力&#x…

[数据结构——lesson10.2堆排序以及TopK问题]

目录 前言 学习目标 堆排序 TopK问题&#xff1a; 解法一&#xff1a;建立N个数的堆 解法二&#xff1a;建立K个数的堆&#xff08;最优解&#xff09; 完整代码 结束语 前言 上节内容我们详细讲解了堆[数据结构——lesson10.堆及堆的调整算法]&#xff0c;接下来我们…

使用HTTPS 服务在浏览器端使用摄像头的方式解析

1.方式1 // vite.config.js import { defineConfig } from vite import vue from vitejs/plugin-vue import basicSsl from vitejs/plugin-basic-sslexport default defineConfig({plugins: [vue(),basicSsl({name: test,domains: [192.168.15.166, localhost], // 添加您的IPc…

上下文管理器和异步I/O

目录 一、上下文管理器 1.1 定义 1.2 特点 1.3 适用场景 1.4 具体实现 1.5 具体实例 1.5.1 文件管理器 1.5.2 线程锁释放资源 二、异步I/O 2.1 定义 2.2 特点 2.3 实现方式 2.4 适用场景 高并发网络服务&#xff1a;Web服务器、API服务等需要处理大量并发连接 2…

LabVIEW信号监测与分析

借助 LabVIEW 平台&#xff0c;生成含正弦波与噪声的信号&#xff0c;经频谱分析等处理&#xff0c;结合动态限值判断信号是否超限&#xff0c;广泛用于音频、振动等领域的信号监测&#xff0c;助力高效开展信号分析与质量把控。概念说明系统围绕信号的生成、处理、分析及监测展…

MySQL数据库与表的创建、修改及数据操作指南

精选专栏链接 &#x1f517; MySQL技术笔记专栏Redis技术笔记专栏大模型搭建专栏Python学习笔记专栏深度学习算法专栏 欢迎订阅&#xff0c;点赞&#xff0b;关注&#xff0c;每日精进1%&#xff0c;与百万开发者共攀技术珠峰 更多内容持续更新中&#xff01;希望能给大家带来…

​new species of flying reptile1 discovered in Scotland​

Pterosaur: new species of flying reptile1 discovered in Scotland 苏格兰斯凯岛发现新翼龙物种 考古学家们在苏格兰斯凯岛发现了一个新的翼龙物种。这种独特的飞行爬行动物生活在1.68 – 1.66亿年前。 This flying reptile soared over the heads of dinosaurs2 when Scotla…

03 节点行为

审批流程图如下图&#xff0c;在此流程图中&#xff0c;存在两个UserTask节点&#xff0c;第一个节点是主管审批&#xff0c;第二个节点是产品经理审批&#xff0c;两个节点中间有一个排他网关&#xff0c;此网关用来对主管审批的结果进行判断&#xff0c;如果主管审批通过&…