.NET Connector ile MySQL Bağlantısı
MySQL'e .NET Connector ile bağlanmak için kod örneği ve connection string içinde Use Procedure Bodies=false ile 'SELECT command denied' hatasının çözümü.
Aşağıdaki kod örneği, MySQL'in .NET Connector'ı aracılığıyla bir MySQL Veritabanına erişim sağlamak için kullanılabilir:
MySQL sürücüsünü web hosting paketinize kendiniz dağıtabilirsiniz; sürücü MySQL'in web sitesinden indirilebilir.
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();
Hata: SELECT command denied to user 'user'@'x' for table 'proc'
Neden, MySQL sürücüsündeki bir hatadır. Burada belgelenmiştir:
http://bugs.mysql.com/bug.php?id=10640
http://bugs.mysql.com/bug.php?id=16703
http://bugs.mysql.com/bug.php?id=14836
Bir işlem, proc tablosunda bir SELECT ifadesi çalıştırmaya çalışır. Bu 'proc' tablosu, MySQL sunucusundaki tüm kullanıcılar için prosedürleri saklayan bir sistem tablosudur. Paylaşımlı hostingte bu tabloya erişim bir sorundur, çünkü erişim müşterilerin birbirlerinin prosedürlerini görmesine olanak tanır.
Sorunun olası bir çözümü, connection string'inizi "Use Procedure Bodies=false" içerecek şekilde değiştirmektir.
Örnek:
"server=localhost; user id=dbuser; password=password; database=dbname; Use Procedure Bodies=false;"
Destek kategorisinden makale: ASP ve ASP.NET