MySQL 函数用户上下文

标签 mysql

我正在尝试创建一个 MySql 存储函数,该函数将返回当前连接用户的用户名。当我以用户“x”连接到数据库时,它仍然返回用户名“root”。

为什么会这样以及如何让它从函数返回用户名“x”。

CREATE DEFINER=`root`@`localhost` FUNCTION `GetUserName`() RETURNS char(255) CHARSET utf8
BEGIN

RETURN cast( SUBSTRING_INDEX(CURRENT_USER(),'@',1) as char(255) );
END

最佳答案

结果有两个选项,SQL SECURITY INVOKER 和 SQL SECURITY DEFINER 描述 here 切换到 SQL SECURITY INVOKER 修复了它。

CREATE DEFINER=`root`@`localhost` FUNCTION `GetUserName`() RETURNS char(255) CHARSET utf8
    SQL SECURITY INVOKER
BEGIN

RETURN cast( SUBSTRING_INDEX(CURRENT_USER(),'@',1) as char(255) );
END

关于MySQL 函数用户上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27212141/

相关文章:

MYSQL 合并 2 个查询

mysql - 使用 2 个范围的查询的索引设计

php - mysql - 如何从选定的行中选择倾斜行

mysql - MySQL中的 "!= NULL"和 "IS NOT NULL"有区别吗?

php - 如何在页面重新加载时保留 $_REQUEST ["id"] 值

php - fatal error : Call to a member function prepare() on a non-object with PDO

mysql - 强制在表末尾插入新记录?

mysql - 如何使用 linq lambdas 将包含数值的 varchar 列排序为实体

php - 信息不显示在数据库中。 XAMPP

mysql - '𠂉' 不是有效的 unicode 字符,但在 unicode 字符集中?