如何仅向特定行授予 MySQL 权限

2023-12-02

假设有一张学生桌
学生(身份证号,姓名,城市)
我想创建一个用户 A 并仅授予更新 id=10 的记录的权限。

CREATE USER A ;
GRANT UPDATE ON student TO A WHERE student.id=10;

我尝试过这个,但它不起作用。


不,不是一行但是包含一行的视图将依次更新实际的真实表。

这可以通过每个学生的特定表视图来完成(是的,这将是一个混乱的数据库结构)。授予该用户对该视图的访问权限,仅允许选择/更新,并且主键将不可更新。当视图更新时,主表也会自行更新。

CREATE SCHEMA `example` ;

CREATE TABLE `example`.`student` (
      `id` INT NOT NULL,
      `name` VARCHAR(45) NULL,
      `email` VARCHAR(45) NULL,
      PRIMARY KEY (`id`));

INSERT INTO `example`.`student` (`id`, `name`, `email`) VALUES ('1', 'bob', '[email protected]');


USE `example`;
CREATE 
     OR REPLACE SQL SECURITY DEFINER
VIEW `student_1` AS
    SELECT 
        `student`.`id` AS `id`,
        `student`.`name` AS `name`,
        `student`.`email` AS `email`
    FROM
        `student`
    WHERE
        (`student`.`id` = '1');

CREATE USER 'student_1_user'@'localhost' IDENTIFIED BY 'user_password';

    GRANT SELECT,UPDATE ON example.student_1 TO student_1_user@localhost IDENTIFIED BY 'user_password';

UPDATE example.student_1 SET email='[email protected]'; // note no primary key needed or allowed
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何仅向特定行授予 MySQL 权限 的相关文章

  • 比较表中的行以了解字段之间的差异

    我有一个包含 20 多列的表 客户端 其中大部分是历史数据 就像是 id clientID field1 field2 etc updateDate 如果我的数据如下所示 10 12 A A 2009 03 01 11 12 A B 200
  • 如何有效地从 DB2 表中删除所有行

    我有一个大约有 50 万行的表 我想删除所有行 如果我做简单的delete from tbl 事务日志已满 我不关心这种情况下的事务 无论如何我都不想回滚 我可以删除许多事务中的行 但是有更好的方法吗 如何有效地从 DB2 中的表中删除所有
  • 使用 Spark DataFrame 获取组后所有组的 TopN

    我有一个 Spark SQL DataFrame user1 item1 rating1 user1 item2 rating2 user1 item3 rating3 user2 item1 rating4 如何按用户分组然后返回TopN
  • 使用Powershell访问远程Oracle数据库

    我需要能够连接到我的网络上基于 Windows 7 的 Oracle 服务器 32 位 Oracle XE 我需要连接的机器运行 Windows 7 64 位 两台机器上都安装了 Powershell 我已在 64 位计算机上安装了 Ora
  • SQL参数化查询不显示结果

    我的 DataAcess 类中有以下函数 但它没有显示任何结果 我的代码如下 public List
  • 获取家庭成员

    假设以下家庭 其构建架构是 create table PersonConn child int parent int insert into PersonConn values 1 2 insert into PersonConn valu
  • 如何使用 MySQL 的 LOAD DATA LOCAL INFILE 在导入 CSV 时将字符串日期更改为 MySQL 日期格式

    我正在使用 MySQL 的 LOAD DATA LOCAL INFILE SQL 语句将数据从 CSV 文件加载到现有数据库表中 下面是一个 SQL 语句示例 LOAD DATA LOCAL INFILE file csv INTO TAB
  • 如何在Oracle中使用Timestamp_to_scn和Scn_to_timestamp?

    我的查询结果是这样的 select cast to date a start time mm dd yyyy hh mi ss pm as timestamp date of call ora rowscn from calling tab
  • 查找 PostgreSQL 中所有范围集合的所有交集

    我正在寻找一种有效的方法来查找时间戳范围集之间的所有交集 它需要与 PostgreSQL 9 2 配合使用 假设这些范围代表一个人可以见面的时间 每个人都可以有一个或多个空闲时间范围 我想找到all可以召开会议的时间段 即所有人都有空的时间
  • 阻止注销页面后的后退按钮

    我有 php 注销页面 当用户单击注销链接时 请参阅此页面并重定向到索引页面 但是当单击后退按钮时 我会看到带有用户数据的上一页 当然 当我刷新页面时 我看不到以前的页面和数据 我在单击注销并单击后退按钮后检查了其他代码 drupal 但我
  • MySQL Connector/C++ 库链接错误问题

    PROBLEM 好吧 我一直在尝试遵循 MySQL Forge Wiki 和其他一些网站上的示例代码 这些网站提供了有关如何获得简单数据库连接的教程 但由于某种原因 我的项目总是因链接错误而失败 我可以我自己不明白为什么或如何解决它 我仍在
  • 第三个下拉菜单不从数据库填充

    我有以下 Index php
  • MYSQL 区分大小写的 utf8 搜索(使用 hibernate)

    我的登录表具有 utf8 字符集和 utf8 排序规则 当我想要检查用户名并检索该特定用户名的其他信息时 hql 查询会为我提供小写和大写相同的结果 我应该如何处理适用于案例的 HQL 查询 我使用 Mysql 5 和 java hiber
  • 如何正确转义mysql?

    我刚刚发现如果我写 select from tbl where name like foo 然后添加 foo 作为参数及其值 a 用户数据 它不会正确转义 我勒个去 它想要 a 即使我使用参数 我还是忍不住觉得我对 sql 注入持开放态度
  • 为什么我的 if 语句没有按我预期的方式工作?

    我正在尝试实现以下目标 我向我的 SQL 数据库询问使用SELECT FROM subjects 这样做之后我要求使用数组mysqli fetch assoc 在那之前一切都很好 现在的问题是 当我尝试在每个循环中修改 genero 的值
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • 对多个数据库执行 SQL 查询

    我知道我的帖子与该论坛中的其他帖子的标题非常相似 但我真的找不到我需要的答案 这是我的问题 我的 Windows Server 上运行着 SQL Server 在我的 SQL Server 中 我有大约 30 个数据库 它们都具有相同的表和
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教

随机推荐

  • 如何使用 const getter 对 std::set 进行排序

    我有一个 std set 容器 其元素是以下类的对象 class LaneConnector public const Lane getLaneFrom const return From const Lane getLaneTo cons
  • 上午 12 点和下午 12 点的时间正则表达式

    我做了这个正则表达式 00 0 0 9 1 012 0 5 0 9 a p m A P M 但问题是它正在接受 00 00 am 我不想这样 如何忽略 我希望时间采用这种格式 上午 12 12 它不应该在这个 上午 00 21 我正在使用此
  • Spring Boot 触发完全重启,而不是在静态文件发生更改时重新加载

    In my Spring Boot项目我有以下结构 src main java resources static css js img webapp WEB INF views 根据文档排除资源 里面的资源static 应该触发一个relo
  • Woocommerce 产品自定义字段:检查输入是否已存在

    我安装了这个 WC Fields Factory 插件来向产品添加新字段 但我需要检查这个新文本框的值是否已存在于数据库中 举个例子 比如在注册时您不能使用已在使用的电子邮件 我必须像屏幕上一样添加文本字段 Update 2 处理字段验证
  • 在视频中跳转到数组中的时间

    沿着以下路线控制 HTML5 视频中的开始位置和播放时长 我试图在每个片段播放完毕后自动从一个片段跳转到下一个片段 每个分段将具有相同的持续时间 并且每个分段的开始时间将位于一个数组中 我似乎无法弄清楚如何在 addEventListene
  • 读取访问冲突 0xCDCCDCCD

    我不断遇到读取访问冲突 这是我的代码 class List public List List const List copy List List operator const List rhs Record headPtr const vo
  • 活动更改的翻转动画

    我想在两个活动之间切换 就像 iPhone 一样 我尝试使用 overridePendingTransition int EnterAnim int exitAnim 方法 但没有成功 有人实现过这样的动画吗 fesp 当您必须更改 Act
  • Java 原生数组长度

    我在 Java 中有一个二维双精度数组 它基本上是一个值表 我想知道它有多少行 它在其他地方声明 并分配 如下 double table 然后传递给一个函数 private void doSomething double table 在我的
  • Java 和 SQL:返回 null 还是抛出异常?

    这是另一个有争议的主题 但这次我只寻找简单且有记录的答案 场景 我们假设以下方法 我会避免以下情况 sql append SELECT FROM append dogs table sql append WHERE append colNa
  • 将 C++20 模板化 Lambda 传递给函数然后调用它

    我试图将模板化 lambda 传递给函数 然后使用模板参数调用它 以启用该函数针对自定义类型的专门化 但是当我尝试调用 lambda 时 出现此错误 error invalid operands to binary expression 对
  • 使用“or”的基本 Python If 语句

    我正在遵循一个学习 python 的初学者计划 我正在努力寻找一种更好的方法来使用具有多种可能性的 if 语句 我正在编写一个基于文本的基本游戏 用户可以选择三种不同的难度级别 简单 中等 困难 我只是想编写接受 1 2 或 3 的代码来告
  • 不允许我将编辑保存到 appsscript.json

    我想访问与用户 Google 帐户关联的名称来解决GoogleJsonResponseException API call to people people get failed with error The caller does not
  • 发送 GuzzleHttp\Psr7\Request 时 Guzzle6 错误资源类型无效:数组

    我试图使用 GuzzleHttp Psr7 Request 发送代码 不知何故我收到错误 Invalid resources type array 以下是我的代码 params name gt myName id gt myId clien
  • 为什么 JavaScript 中的“假”是真的?

    我知道在 javascript 中空字符串是假的 非空字符串在 javascript 中是真的 然而 为什么是 false javascript中的真相 规范中有什么明确的内容吗 这是性能问题还是在某些情况下您需要字符串 false 代表t
  • Aeson 合并对象编码

    我想解析和编写具有一些共同基本属性和一些附加单独属性的 JSON 对象 例如 假设我们有两种类型的对象User and Email 两种类型共享相同的基本属性foo and bar 但它们具有特定于其类型的附加属性 User foo foo
  • 将大量节点插入 Neo4J

    我有一个表存储在一个典型的 MySQL 数据库中 并且我使用 java 构建了一个小型解析器工具 用于解析并构建 neo4j 数据库 该数据库将有约 4000 万个节点 每个节点都有一个或多个边 最多可能有 10 个边 问题来自我必须创建某
  • 如何调用“Select”的OnChange事件? (Delphi - 网络浏览器)

    我正在使用 Delphi 和 Web 浏览器组件来导航 html 页面 该页面有一个 Combobox 有什么方法可以调用 OnChange 事件吗 组合框是这样的
  • 将数组列中的值替换为另一个表中的相关值

    在我的数据库中我有一个表relations有一个柱子relation ids包含用户的 ID user id 它采用具有多个可能 ID 的数组形式 例如 111 112 156 4465 我还有另一张桌子names包含有关用户的信息 例如u
  • 如何在 iPhone 上使用委托模式

    我对在 iPhone 上使用委托模式有一些疑问 这是使用委托模式的代码 这段代码有效 SecondViewController secondViewController SecondViewController alloc init sec
  • 如何仅向特定行授予 MySQL 权限

    假设有一张学生桌 学生 身份证号 姓名 城市 我想创建一个用户 A 并仅授予更新 id 10 的记录的权限 CREATE USER A GRANT UPDATE ON student TO A WHERE student id 10 我尝试