我的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";
但为了数据库安全是不允许这么做的,有没有其它的解决方案。
https://blog.csdn.net/xyz846/article/details/80418412
经过分析,原因是因为我这个数据库是从别的机器迁移到新主机的,在原来创建数据库的时候,很多表或者视图应该是使用了root@%这种授权,所以在运行dump或者C#的Fill时,检测到权限不足所以无法运行(看来C#的DataAdapter对权限的要求要高于SqlCommand了),才提示上面的信息。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。