1. ホーム
  2. mysql

[解決済み] エラー:テーブル '<table-name>' に対するユーザー '<userid>'@'<ip-address>' への select コマンドが拒否されました。

2022-02-04 06:19:01

質問

私のウェブサイトでは、MySQLデータベースを使用しています。データベースに関連するすべての操作を行うために、ウェブサービスを使用しています。

今、そのウェブサービスの1つのメソッドで、私は次のようなエラーが発生しました。

select command denied to user '<userid>'@'<ip-address>' for table '<table-name>''

何が問題なのでしょうか?

以下は、そのエラーが発生したコードです。デバッグしてみたところ、次の行で失敗していることがわかりました。

MySqlDataReader result1 = command1.ExecuteReader();

以下は私のコードです。

        String addSQL = "Select Max(`TradeID`) from `jsontest`.`tbl_Positions";
        MySqlConnection objMyCon = new MySqlConnection(strProvider);
        objMyCon.Open();
        MySqlCommand command = objMyCon.CreateCommand();

        command.CommandText = addSQL;
         MySqlDataReader result = command.ExecuteReader();
        //int j = command.ExecuteNonQuery();
         while (result.Read())
         {
             MaxTradeID = Convert.ToInt32(result[0]);
         }
        objMyCon.Close();
        for (i = 1; i <= MaxTradeID; i++)
        {
            String newSQL = "Select `Strike`,`LongShort`,`Current`,`TPLevel`,`SLLevel` from `json`.`tbl_Position` where `TradeID` = '" + i + "'";
            MySqlConnection objMyCon1 = new MySqlConnection(strProvider);
            objMyCon1.Open();
            MySqlCommand command1 = objMyCon1.CreateCommand();

            command1.CommandText = newSQL;
            MySqlDataReader result1 = command1.ExecuteReader();
           objMyCon2.Close();

解決方法は?

データベースユーザーが select クエリを実行する権限を持っていません。

mysql の root 権限があれば、このユーザーに権限を与えることができます。

http://dev.mysql.com/doc/refman/5.1/en/grant.html

2つ目のクエリは、異なるデータベース、異なるテーブルで実行されます。

 String newSQL = "Select `Strike`,`LongShort`,`Current`,`TPLevel`,`SLLevel` from `json`.`tbl_Position` where `TradeID` = '" + i + "'";

そして、あなたが接続しているユーザーは、このデータベースまたはこの特定のテーブルからデータにアクセスする権限を持っていません。

こんなことを考えませんでしたか?