在另一个帐户下获取mysql中的正确当前用户

在另一个帐户下获取mysql中的正确当前用户,mysql,Mysql,我(使用根帐户)创建一些程序myproc,其中包含以下部分代码: declare cur_uname varchar(20); select substring_index(current_user(),'@', 1) into cur_uname; 然后我创建另一个帐户abc@localhostwith将程序mydb.myproc上的执行授予'abc'@'localhost' 当我在帐户abc@localhost,cur\u uname是root,但不是abc。我应该如何解决这个问题? :

我(使用根帐户)创建一些程序
myproc
,其中包含以下部分代码:

declare cur_uname varchar(20);
select substring_index(current_user(),'@', 1) into cur_uname;
然后我创建另一个帐户
abc@localhost
with
将程序mydb.myproc上的执行授予'abc'@'localhost'
当我在帐户
abc@localhost
cur\u uname
root
,但不是
abc
。我应该如何解决这个问题?

  • :

    在存储程序或视图中,
    CURRENT_USER()
    返回定义对象的用户的帐户(由其
    DEFINER
    值给出),除非使用
    SQL安全调用程序
    特性定义。在后一种情况下,
    CURRENT_USER()
    返回对象的调用程序

  • :

    utf8
    字符集中以字符串形式返回当前MySQL用户名和主机名。[…]该值表示连接到服务器时指定的用户名,以及连接到的客户端主机。该值可以不同于
    当前用户()
    的值

所以我想这一切都取决于你所需要的“正确”的定义