开发者社区> 问答> 正文

C#,MySQL.Data问题

已解决

我的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";

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

展开
收起
wangccsy 2018-11-15 15:08:47 2886 0
1 条回答
写回答
取消 提交回答
  • 前一个帐号wangccsy@126.com不知道怎么的就成了企业帐号,改不成个人。所以重新注册了一个个人帐号。老程序员。精通JAVA,C#,数据库,对软件开发过程和流程熟悉。考取系统分析师,项目管理师和系统架构设计师等软件资格考试认证。愿意和大家一起前进。
    采纳回答

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

    2019-07-17 23:14:43
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
深入MySQL实战 立即下载
MySQL 5.7让优化更轻松 立即下载
好的 MySQL 兼容可以做到什么程度 立即下载

相关镜像