如何在MySQL中找到当前用户连接的IP地址?

2024-03-27

在您回答“use current_user()”(这在很多情况下都有效)或“use user()”(这实际上不起作用)之前,请阅读以下内容...

我正在尝试在表上创建一个视图,该视图限制用户对表中某些行的访问,并由用户连接的 IP 地址控制。

我的第一次尝试是这样的:

create table testtable (
  `RowID` bigint not null auto_increment,
  `owner` varchar(64),
  `key` varchar(64),
  `val` varchar(64),
  primary key (`RowID`)
);
create view testview (
  `RowID`,
  `owner`,
  `key`,
  `val`
) as select
  `testtable`.`RowID` as `RowID`,
  `testtable`.`owner` as `owner`,
  `testtable`.`key` as `key`,
  `testtable`.`val` as `val`
from testtable
where (testtable.owner = substring_index(current_user(), '@', -1));

create user 'testuser'@'192.168.3.30' identified by 'testpass';
grant select, insert, update, delete on testview to 'testuser'@'192.168.3.30';

现在的理论是我应该能够从主机 192.168.3.30 以 testuser 身份登录并执行类似的操作select * from testview并获取适用于我的测试表的正确子集。

上面的方法不起作用。它不起作用的原因是current_user()返回视图的definer默认情况下,导致没有数据,或者(更糟糕)错误的数据,具体取决于定义者是谁。如果我愿意current_user()返回invoking用户,我需要创建视图SQL SECURITY INVOKER子句,它还限制了调用用户的安全权限,从而违背了代码的最初目的。

我很想用user(),但不幸的是,它几乎总是返回主机名/域而不是 IP 地址。

旁注,以防不清楚:在这种情况下,在 PHP(或 Ruby、perl 或其他)中获取 IP 地址是没有用的。我正在设置一些数据库安全性,因此依赖客户端显然是不够的。我需要 SQL 中的 IP 地址。

对于好奇寻找想法/参考/背景的人:

作为参考,我从这里得到了这个巧妙的安全技巧的想法here http://www.sqlmaestro.com/resources/all/row_level_security_mysql/,但他们使用用户名而不是 IP 地址,这会让这变得更容易。就我而言,我正在尝试建立一个主机数据库,该数据库部分由主机本身更新。我不想为每个主机设置不同的用户,但我确实希望每个主机都能够更新自己的记录(文件系统、风扇速度、温度等)。


如果你能控制mysqld过程中,您可以使用以下命令启动它--skip-name-resolve http://dev.mysql.com/doc/en/server-options.html#option_mysqld_skip-name-resolve选项;然后SUBSTRING_INDEX(USER(), '@', -1)会给你当前用户的IP地址。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在MySQL中找到当前用户连接的IP地址? 的相关文章

  • Oracle使用with子句创建表

    我可以从使用形成的查询创建表吗with clause Sure CREATE TABLE t AS WITH some data AS SELECT 1 as some value FROM dual UNION ALL SELECT 2
  • 从 MySQL 列创建 PHP 数组

    mysql fetch array会给我一个获取行的数组 从一列中所有行的值生成数组的最佳方法是什么 您可以循环遍历数组并创建一个新数组 如下所示 column array while row mysql fetch array info
  • MySQL将多个表中的记录插入到新表中

    我正在尝试使用另外 2 个表中的记录填充一个新表 period states 是新的 空的 period states id period id sla id period 包含 15 条记录 periods id slas 包含 84 条
  • 带有 CONTAINS 查询的PreparedStatement

    我有一个查询需要连续运行 28000 次 所以我认为使用准备好的语句可能是一个聪明的主意 这是我的查询 String requestWithFirstName SELECT SE ELEMENT ID SE LASTNAME SE FIRS
  • 更新表并返回旧值和新值

    我正在编写一个 VB 应用程序 用于清理 DB2 数据库中的一些数据 在一些表中我想更新整个列 例如帐号列 我正在将所有帐号更改为从 1 开始 并在列表中向下递增 我希望能够返回旧帐号和新帐号 这样我就可以生成某种可以引用的报告 这样我就不
  • 使用 Sequelize 计算关联条目数

    我有两张桌子 locations and sensors 每个条目在sensors有一个外键指向locations 使用 Sequelize 如何获取所有条目locations以及条目总数sensors与每个条目相关联locations R
  • ECHO MYSQL 结果显示空白页 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我知道这一定很简单 但我做不到 我需
  • 如何在codeigniter中引用数据库连接?

    如何在 CodeIgniter 数据库处理程序对象中手动调用 PHP 数据库函数 如何检索连接 dbc 或者调用类似的函数mysql real escape string dbc variable 您可以调用任何 mysql 本机函数并访问
  • FIND_IN_SET 具有多个值[重复]

    这个问题在这里已经有答案了 我想从数据库字段搜索多个值 以下是我的查询 SELECT FROM tablename WHERE FIND IN SET 12 13 15 15 category id 我如何搜索它对我不起作用 FIND IN
  • PDOException SQLSTATE[HY000] [2002] 我的本地计算机上的连接超时

    最近我从服务器导入了代码 但本地代码无法连接到远程 mysql 数据库 所以我有两个问题 我可以访问我的远程数据库吗 如果是 为什么我的代码不起作用 如果没有 有没有办法绕过这个问题 我不想复制在本地计算机上运行的 mysql 数据库 我的
  • PDO 如何在执行 rollBack() 函数之前回滚查询?

    这是我的脚本 try dbh con gt beginTransaction stmt1 dbh conn gt prepare UPDATE activate account num SET num num 1 stmt1 gt exec
  • 如何计算两个ip之间的主机数量? C#

    我有两个ip 1 1 1 1 1 2 4 4 4 4 显然这只是一个例子 这是一个动态计算器 如果子网掩码不相关 我如何计算所述 ip 之间的主机数量 要计算 理论 IP 地址的数量 您需要将每个 IP 地址转换为其 32 位整数格式 这实
  • oracle中是否有相当于concat_ws的东西?

    我有大量的列试图聚合在一起 其中大多数都有 NULL 值 我想分隔确实以 出现的值但我在oracle中找不到有效的方法来做到这一点 CONCAT WS 正是我所需要的 因为它不会在 NULL 值之间添加分隔符 但 Oracle 不支持这一点
  • 单个 sql 查询可以处理 sql server 中的 null 或值日期范围

    使用 SQL Server 2008 我有一个存储过程 其中开始日期和结束日期作为日期范围的输入参数 寻找一个singlesql 查询 其中在 where 子句中有一个开始日期和结束日期 可以处理日期均为空或都有值的两种情况 我不想使用 I
  • 查询查找表中姓名和号码之间的重复项

    SELECT count lower name number FROM tbl GROUP BY lower name number HAVING count gt 1 输入表1 slno name number 1 aaa 111 2 A
  • 在 Ubuntu 上纯粹通过 bash 脚本安装 mysql 5.7

    我想要一个无需任何手动输入即可安装 MySQL 5 7 实例的 bash 脚本 我正在关注数字海洋教程 https www digitalocean com community tutorials how to install mysql
  • Laravel 雄辩的 withCount() 应该比 with() 慢

    所以我问这个的原因是在我当前的应用程序中withCount 与仅通过以下方式获取关系的所有数据相比 响应时间几乎增加了三倍with 并只是从前端获取长度 javascript 我认为使用的要点withCount 是为了加快查询速度 但也许我
  • 按组内顺序排序

    order by 在第二个查询中不起作用 我需要先按 DNAID 订购 然后按 DNBID 订购 首先查询其顺序为 111221 第二个查询的顺序为 112112 有关我想要完成的任务的更多信息和细节https stackoverflow
  • 通过“SELECT”命令选择每组的前两条记录的最佳方法是什么?

    例如我有下表 id group data 1 1 aaa 2 1 aaa 3 2 aaa 4 2 aaa 5 2 aaa 6 3 aaa 7 3 aaa 8 3 aaa 通过 SELECT 命令选择每组的前两条记录的最佳方法是什么 如果没有
  • SQL查询:按字符长度排序?

    是否可以按字符总数对sql数据行进行排序 e g SELECT FROM database ORDER BY data length 我想你想用这个 http dev mysql com doc refman 5 0 en string f

随机推荐

  • import jwt 导入错误:没有名为 jwt 的模块

    我一直在尝试运行这个项目https github com udacity FSND Deploy Flask App to Kubernetes Using EKS https github com udacity FSND Deploy
  • 在 C++ 中获取所有打开的窗口的列表并存储它们

    我目前正在尝试获取所有打开的窗口的列表并将它们存储在向量中 我一直在查看代码 以至于解决方案可能非常简单 但如果没有全局变量 我想避免 我似乎无法完成它 这是代码 include stdafx h include json h includ
  • 按月和日分组的事件直方图

    我正在尝试根据多年但按月和日分组的一组数据制作每个事件发生次数的直方图 或其他图 基本上 我想要从 3 月 1 日开始的一年长的 x 轴 显示每个日期出现的次数 并根据分类值对这些日期进行着色 以下是数据集中前 20 名的条目 goose
  • ValueError:参数 scipy rv_continuous 中的域错误

    我试图使用 scipy stats rv continuous 对给定概率密度函数 pdf 的随机变量进行采样 class Distribution stats rv continuous def pdf self x a c return
  • 在 Stata 的 do-file 中将命令分成几行

    我想运行keepStata 12 中 do 文件中的命令 keep a1 a2 a3 a4 a5 b1 b2 b3 b4 b5 c1 c2 c3 c4 我想要的是执行以下操作 keep a1 a2 a3 a4 a5 b1 b2 b3 b4
  • C++ 和 OpenCV:白色像素聚类算法

    我有一个二值图像 黑色和白色像素 我想根据彼此之间的距离将白色像素聚类成组 对象 并检索每个聚类的质心 这是我必须处理的示例图像 框架为紫色 我想检查聚类方法是否可以提供我正在寻找的结果 这意味着我试图避免在知道它值得之前自己实现算法 Op
  • 带有我的应用程序图标的安全中心符号盾

    我开发了一个需要管理员权限才能执行的应用程序 在 Windows 7 上运行应用程序 用户始终必须以 以管理员身份运行 启动应用程序 否则我的应用程序会提示用户 您没有管理权限等 这是可以理解的 因为 Windows 7 中有 UAC 要摆
  • 设置模拟位置时 GPS 提供商未知错误?

    我正在尝试设置我的模拟位置 但是 我收到以下错误 提供商 gps 未知 并且不确定出了什么问题 我已经获得了在manifest xml 中声明的所有权限以及所有参数 模拟定位法 Initiates the method to set the
  • 翻转 OpenGL 纹理

    当我正常从图像加载纹理时 由于 OpenGL 的坐标系统 它们是颠倒的 翻转它们的最佳方法是什么 glScalef 1 0f 1 0f 1 0f 反向映射纹理的 y 坐标 手动垂直翻转图像文件 在 Photoshop 中 加载后以编程方式翻
  • 检查元素在溢出滚动 DIV 中是否完全可见[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我已经为元
  • 简单的 schdule Nodejs 脚本在连接到远程数据库时插入记录两次

    我有一个时间表nodejs脚本 基本上 它有时间表和命令表 调度表有很多命令行 Nodejs 脚本每 5 秒检查一次调度表 如果预定时间与当前时间匹配 我将命令行 从计划表 插入到命令表中 错误是 我在笔记本电脑上运行脚本并进行测试数据库的
  • iOS:使用全屏图像构建幻灯片

    我想构建一个幻灯片 您可以在其中滑动图像 以全屏模式显示 我打算使用 UIViews 并添加手势识别器 但我想知道是否有一些已经完成的事情我可以重用 或者任何提示 我希望获得与您在 iPad 上滑动打开的应用程序时相同的效果 您可以滑动它们
  • 如何在 Python 中使用 OpenCV 跟踪运动?

    我可以使用我的网络摄像头获取帧OpenCV http opencv willowgarage com wiki 在Python中 camshift 示例接近我想要的 但我不希望人为干预来定义对象 我想获得在几帧的过程中变化的总像素的中心点
  • VS2017 在源代码中出现大量“无法解析符号”错误,但一切都构建完成

    我在 VB Net 源代码文件中收到大量 无法解析符号 错误 解决方案中的所有内容都可以毫无问题地构建 Peek Definition 和 Goto Implement 工作正常 到目前为止 我已经尝试过以下操作 进行过构建吗 清理 关闭
  • 理解 find 中转义的括号

    我已经拼凑了下面的内容 它似乎可以工作 但 空 可能是个例外 我正在学习的一件事 随着我的学习 是 仅仅因为某些东西有效 并不意味着它是正确的或正确形成的 我的问题是如何确定查找中哪些需要括号 哪些不需要命令 在 OS X 中 and 是
  • Python类装饰器扩展类导致递归

    我正在覆盖 a 的保存方法ModelForm我不知道为什么它会导致递归 parsleyfy class AccountForm forms ModelForm def save self args kwargs some other cod
  • matplotlib 中的散点图

    这是我的第一个 matplotlib 程序 很抱歉我的无知 我有两个字符串数组 说 A test1 test2 and B test3 test4 如果之间存在任何相关性A and B元素 它们的 corr 值将被设置为1 test1 te
  • ClearCase 的“MVFS 文件系统”的本质是什么?

    Clearcase 服务器中的 MVFS 有何作用 MVFS 多版本文件系统 并不是 创建 文件系统 而是让您访问一个文件系统 M 在 Windows 上 或 view 在 Unix 上 是一个安装点 允许浏览您安装的任何 Vob Clea
  • 更改 xml 节点中的值时出错

    我需要更改 xml 的多个值 但是当我运行 setText 行时 它显示 java lang NullPointerException 错误 我不明白为什么
  • 如何在MySQL中找到当前用户连接的IP地址?

    在您回答 use current user 这在很多情况下都有效 或 use user 这实际上不起作用 之前 请阅读以下内容 我正在尝试在表上创建一个视图 该视图限制用户对表中某些行的访问 并由用户连接的 IP 地址控制 我的第一次尝试是