.NET Dapper / MySql 8.0问题:只有root用户才能执行存储过程。其他用户获得SqlNullValueException

时间:2018-12-17 16:07:10

标签: c# mysql .net dapper

我有一小段代码在mysql数据库中执行存储过程:

        string connectionString = "server=127.0.0.1;uid=root;database=myDb;pwd=mypwd;";

        using (IDbConnection db = new MySqlConnection(connectionString))
        {
            var record = db.Query<dynamic>("record_Get", commandType: CommandType.StoredProcedure);
        }

当连接字符串使用root用户凭据时,存储过程将按预期执行。但是,当我尝试使用另一组凭据(other_user)时,在查询数据库时收到以下错误消息:

System.Data.SqlTypes.SqlNullValueException: 'Data is Null. This method or property cannot be called on Null values.'

我试图确保other_user具有正确的权限。我进入了“用户和特权”选项卡,并在架构级别授予了SELECT和EXECUTE权限。为了很好,我也跑了:

GRANT EXECUTE ON mydb.* TO 'other_user'@'%';

没有骰子。

如果我在C#代码中将record_Get存储过程查询交换为直接SQL命令,则记录将成功返回:

var record = db.Query<dynamic>("SELECT * from record"); // Not the actual query

用户还可以在SQL脚本中执行存储过程:

EXECUTE record_Get(); /* works fine! */

通过在Workbench GUI中单击闪电符号来尝试执行存储过程,什么都没有。列出了这些过程,用户可以通过脚本执行它们,但是GUI按钮不执行任何操作。 (不确定是否已连接)

这似乎是权限问题,但我之前从未见过,而且不太确定下一步该怎么看。有人有建议吗?

mysql版本:8.0.12

0 个答案:

没有答案