Connexion à MySQL avec .NET Connector
Exemple de code de connexion MySQL via .NET Connector et solution à l'erreur 'SELECT command denied' via Use Procedure Bodies=false dans la chaîne de connexion.
L'exemple de code suivant peut être utilisé pour accéder à une base de données MySQL via le connecteur .NET de MySQL :
Vous pouvez déployer vous-même le pilote MySQL sur votre hébergement web ; il peut être téléchargé depuis le site web de MySQL.
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();
Erreur : SELECT command denied to user 'user'@'x' for table 'proc'
La cause est un bug dans le pilote MySQL. Documenté ici :
http://bugs.mysql.com/bug.php?id=10640
http://bugs.mysql.com/bug.php?id=16703
http://bugs.mysql.com/bug.php?id=14836
Un processus tente d'exécuter une instruction SELECT sur la table proc. Cette table « proc » est une table système qui stocke les procédures de tous les utilisateurs du serveur MySQL. Sur un hébergement mutualisé, l'accès à cette table pose problème, car cet accès donnerait aux clients la possibilité de voir les procédures des autres.
Une solution possible à ce problème consiste à modifier votre chaîne de connexion afin qu'elle contienne « Use Procedure Bodies=false ».
Exemple :
"server=localhost; user id=dbuser; password=password; database=dbname; Use Procedure Bodies=false;"
Article de la catégorie support: ASP & ASP.NET