当前位置: 首页 > 面试题库 >

在MySQL触发器中,如何获取有关发送请求的用户的信息?

吴品
2023-03-14
问题内容

我在使用触发器的MySQL 5.5上,我想检查用户是否可以执行其请求。这只是一个例子,我该如何处理这样的代码?

-- Trigger DDL Statements
DELIMITER $$

USE `database`$$

CREATE TRIGGER TBI_TEST BEFORE INSERT
ON tb_test FOR EACH ROW
BEGIN
  DECLARE ER_BAD_USER CONDITION FOR SQLSTATE '45000';

  IF NEW.host != {{HOW TO KNOW THE HOST PART OF THE CURRENT USER?}} THEN
    SIGNAL ER_BAD_USER 
        SET MESSAGE_TEXT = 'forbidden', MYSQL_ERRNO = 401;
  END IF;
END$$

问题答案:

好的,我找到了解决方案:

用户()

[编辑]

警告:

降低它们并返回而不降低时,MySQL使用UTF8-BIN归类存储userhostUSER()

例如,当MySQL已存储并USER()返回gqyy@MyTinnyHost-PC.local时,返回gqyy``mytinnyhost- pc.local

当您在内部使用a并返回存储在 用户定义的变量中
时,将出现此处描述的问题(错误#60166)SUBSTRING_INDEX()``LOWER()``USER()
__

例如:

mysql> SET @user_at_host = 'gqyy@mytinyhost-PC.local';
Query OK, 0 rows affected (0,00 sec)

mysql> SELECT LOWER(SUBSTRING_INDEX(@user_at_host, '@', -1));
+------------------------------------------------+
| LOWER(SUBSTRING_INDEX(@user_at_host, '@', -1)) |
+------------------------------------------------+
| mytinyhost-pc. ocal                            |
+------------------------------------------------+
1 row in set (0,00 sec)


 类似资料:
  • 问题内容: 据我了解,当您调用last_insert_id()时,它是通过连接进行的,因此您将获得插入到调用last_insert_id()的同一连接中的最后一行的ID,对吗? 那么,如果我在“ AFTER INSERT”触发器中调用last_insert_id()怎么办? 我想做的基本上是这样 “ anothertable”中的id与“ sometable”中的id非常重要,这是否可行?还是应该

  • 如果我只在生产者端发送一条记录并等待,生产者何时将记录发送给经纪人?在Kafka文档中,我找到了名为“linger.ms”的配置,它说: 一旦我们得到 根据以上文件,我有两个问题。 > 如果生产者收到的数据达到batch.size,它会立即触发发送一个只包含一个批次的请求给代理?但是正如我们所知,一个请求可以包含许多批次,那么它是如何发生的呢? 这是否意味着即使是收到的数据也不足以批量处理。大小,

  • 问题内容: 我正在使用express.js,我需要知道发起呼叫的域。这是简单的代码 如何从或对象获取域?我的意思是我需要知道api是由somesite.com还是someothersite.com调用的。我试着做两者的console.dir 和,但我还是不知道从那里,也可以参考文档,但它给了我没有帮助。 问题答案: 您必须从标题中检索它。 在HTTP 1.0中是可选的,但在1.1中是必需的。而且,

  • 我在WordPress数据库中编写了一个MySQL触发器&它给出了一个错误。我的触发器代码如下: 它会给出以下错误消息: 错误 SQL查询:文档 CREATE[DEFINER={user CURRENT_USER}]trigger up_trig AFTER INSERT ON每一行BEGIN DECLARE“选择DISTINCT()INTOFROM其中='panchayat_id'和=new。(

  • 我想存储从中接收请求的URL/ip。 例如,I am(服务器)从ip地址176.15.14.3接收请求。 我想获取ip地址176.15.14.3 我可以用Spring来做吗。

  • 我正在尝试弄清楚如何确定是什么导致构建从脚本化Jenkinsfile中运行。原因是我在docker容器中有一个脚本,我想在cron作业中运行它,所以当cron作业触发时,我只希望它运行容器,但当我推送更改时,我希望它检查代码、重建容器、运行静态代码分析、运行测试等。在cron运行中不需要所有这些。 我如何能得到原因?我尝试了< code > current build . get causes()