开发者社区> 问答> 正文

C#,MySQL.Data问题

wangccsy 2018-11-15 15:08:47 763

我的MySQL数据在另一台主机上,并针对我的主机做了授权。

mysql> grant all privileges on . to root@"192.168.21.134" identified by "root";
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
然后在我本机使用C# 建议连接查询数据库。

MySqlConnection myConnection = new MySqlConnection("Server=192.168.21.244;Database=demo;Uid=root;Pwd=root");

当使用 MySqlDataReader reader = command.ExecuteReader();这样的方式读取数据库时,一点问题都没有,可以正常访问。

但如果使用如下的方式(使用MySQLDataAdapter时),

MySqlDataAdapter myDataAdapter = new MySqlDataAdapter(strSQL, myConnection);

myDataSet = new DataSet();
myDataAdapter.Fill(myDataSet, "test");在执行到Fill时报The user specified as a definer ('root'@'%') does not exist。

网上的解决方案就是让我在MySQL直接授权,即grant all privileges on . to root@"%" identified by "root";

但为了数据库安全是不允许这么做的,有没有其它的解决方案。

关系型数据库 MySQL 数据库 C#
分享到
取消 提交回答
全部回答(1)
  • wangccsy
    2019-07-17 23:14:43
    已采纳

    https://blog.csdn.net/xyz846/article/details/80418412
    经过分析,原因是因为我这个数据库是从别的机器迁移到新主机的,在原来创建数据库的时候,很多表或者视图应该是使用了root@%这种授权,所以在运行dump或者C#的Fill时,检测到权限不足所以无法运行(看来C#的DataAdapter对权限的要求要高于SqlCommand了),才提示上面的信息。

    0 0
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程