我的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";
但为了数据库安全是不允许这么做的,有没有其它的解决方案。