Verbindung zu MySQL mit .NET Connector
Codebeispiel zur MySQL-Verbindung über den .NET Connector und Lösung des 'SELECT command denied'-Fehlers via Use Procedure Bodies=false im Connection String.
Das folgende Codebeispiel kann verwendet werden, um Zugriff auf eine MySQL-Datenbank über den .NET Connector von MySQL zu erhalten:
Sie können den MySQL-Treiber selbst auf Ihrem Webhosting bereitstellen; er kann von der MySQL-Website heruntergeladen werden.
using MySql.Data.MySqlClient;
MySqlConnection con = new MySqlConnection();
string mysql = "Server=[server];Database=[database];User=[brugernavn];pwd=[password]";
con.ConnectionString = mysql;
con.Open();
MySqlCommand cmd = con.CreateCommand();
cmd.CommandText = "SELECT * FROM TestTabel";
cmd.Connection = con;
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Response.Write(reader.GetValue(0).ToString());
}
cmd.Dispose();
con.Close();
Fehler: SELECT command denied to user 'user'@'x' for table 'proc'
Die Ursache ist ein Fehler im MySQL-Treiber. Dokumentiert hier:
http://bugs.mysql.com/bug.php?id=10640
http://bugs.mysql.com/bug.php?id=16703
http://bugs.mysql.com/bug.php?id=14836
Ein Prozess versucht, eine SELECT-Anweisung auf die proc-Tabelle auszuführen. Diese 'proc'-Tabelle ist eine Systemtabelle, die die Prozeduren aller Benutzer auf dem MySQL-Server speichert. Bei Shared Hosting ist der Zugriff auf diese Tabelle ein Problem, da der Zugriff es Kunden ermöglichen würde, die Prozeduren der anderen einzusehen.
Eine mögliche Lösung des Problems besteht darin, den Connection String zu ändern, sodass er "Use Procedure Bodies=false" enthält.
Beispiel:
"server=localhost; user id=dbuser; password=password; database=dbname; Use Procedure Bodies=false;"
Artikel aus der Support-Kategorie: ASP & ASP.NET