MySQL查询失败' SELECT命令被拒绝给用户......'但用户有权限

时间:2014-04-08 21:17:30

标签: c# mysql

我有一个MySQL数据库,我在其中创建了一个新的用户帐户,如下所示:

CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT SELECT ON database.* TO 'username'@'%';

运行"显示'用户名'"确认权限为:

GRANT USAGE ON *.* TO 'statstracker'@'%' IDENTIFIED BY PASSWORD 'passwordhash'
GRANT SELECT ON `database`.* TO 'username'@'%'

我可以通过MySQL Workbench连接到数据库并通过此用户帐户执行查询。我甚至可以通过MySQL Workbench从网络上的不同主机连接,但是当我尝试在我的程序中这样做时,它会因以下错误而失败:

  

SELECT命令被拒绝用户'用户名' @'主机名'表格' tablename'

这是我非常简单的测试代码:

String str = @"server=serverip;database=databasename;userid=username;password=password;";
MySqlConnection con = null;

try
{
    con = new MySqlConnection(str);

    MySqlCommand cmd = new MySqlCommand("SELECT ID FROM `database`.`table`", con);

    MySqlDataAdapter da = new MySqlDataAdapter(cmd);
    DataTable dt = new DataTable();
    da.Fill(dt);

    foreach (DataRow dr in dt.Rows)
    {
        Console.WriteLine(dr["ID"]);
    }
}
catch (MySqlException err)
{
    Console.WriteLine("Error: " + err.ToString());
}
finally
{
    if (con != null)
    {
        con.Close();
    }
}

有没有人对我如何解决这个问题有任何建议?

编辑:更多信息

如果我没有尝试进行选择而只是打开连接,则连接打开就可以了:

String str = @"server=serverip;database=databasename;userid=username;password=password;";
MySqlConnection con = null;
try
{
    con = new MySqlConnection(str);
    con.Open();
    Console.WriteLine("Opened Just Fine");
}
catch (MySqlException err)
{
    Console.WriteLine("Error: " + err.ToString());
}
finally
{
    if (con != null)
    {
        con.Close();
    }
}

此外,我使用第一个代码片段(带有选择的代码片段)对不同主机上的不同MySQL服务器,使用类似创建的用户帐户,并且它有效。这是否意味着我的代码很好,这是一个配置问题?如果是这样的话,我应该考虑一下什么样的事情来试图找出正在发生的事情?

0 个答案:

没有答案