2013-04-02 9 views
21

Ho il mio sito web con hostgator e voglio accedere al database MySQL con un'applicazione C# Windows, ma quando ho provato a collegare ottenuto questo messaggio:autenticazione con password vecchia non è più supportato, utilizzare 4,1 password stile

"Autenticazione con vecchia password non è più supportato, utilizzare 4,1 stile password"

ho cercato data soluzione:

SET SESSION old_passwords=0; 
SET PASSWORD FOR [email protected]=PASSWORD('your pw here'); 

prima query eseguita correttamente ma ho ricevuto l'errore "Accesso negato per utente @ host" quando viene eseguita la seconda query. Non riesco a capire perché c'è questo problema. Sto usando MySQL-connecter-net 6.6.5.

Connetto correttamente il mio database con MySql workbench 5.2.47.

Qualcuno può aiutarmi cosa posso fare di più?


Ho contattato il mio sito di hosting e apportano modifiche al file my.cnf per utilizzare la password in stile 4.1. e sono in grado di connettersi con mysql

mysql -u <username> -p <password> -h <hostname>; 

ma quando ho provato a connettersi con C# con mySQL connettore rete 6.6.5 ho ottenuto di nuovo questo errore.

Utilizzo Visual Studio 2012 con il connettore MySQL 6.6.5 su Windows 8 a 64 bit. questo è il codice che ho usato per collegare

using MySQL.Data.MySQLClient; 

private void button1_Click(object sender, EventArgs e) 
      { 
       string connStr = String.Format("server={0};port={1};uid={2};password={3};database={4}", 
        txtserver.Text, txtPort.Text, txtUser.Text, txtPassword.Text, txtDatabase.Text); 
       conn = new MySqlConnection(connStr); 
       try 
       { 
        conn.Open(); 
        MessageBox.Show("Test Connection Succeded"); 
       } 
       catch (MySqlException ex) 
       { 
        MessageBox.Show(ex.Message); 
       } 
      } 

Non riesco a capire dove sia il problema. Per favore aiutatemi

+0

Prova a cambiare "utente @ host" per il tuo vero utente DB. (user @ host è solo un esempio) – maxcnunes

risposta

21

Ho avuto lo stesso problema. Nel mio caso appena eseguito il seguente comando collegato sul mio database dal Workbench:

SET SESSION old_passwords=0; 
SET PASSWORD FOR my_user=PASSWORD('my_password'); 

Dopo che ho potuto connnect utilizzando MySQL Connector 6.6.5 nel codice C# con la stringa di connessione comune mysql:

"server=my_server_ip;user=my_user;database=my_db;port=3306;password=my_password;" 
+6

Poiché l'OP non ha il permesso di eseguire 'SET PASSWORD FOR ...', potrebbe provare semplicemente 'SET PASSWORD = PASSWORD ('my_password');' (che imposta la password per l'utente corrente, senza richiedere privilegi speciali). – eggyal

+1

Esegue SET SESSION old_passwords = 0; avere conseguenze per le applicazioni/connessioni esistenti usando lo stesso server? – Totoro53

5

Oggi ho avuto un problema simile nella mia applicazione C#. Ho provato a collegarmi a un server su hostgator.com (mysql) e collegarmi a localhost. Dopo aver letto molti post e aver apportato numerose modifiche, ho seguito ogni passaggio ma non sono riuscito a connettermi al mio mysql hostgator.

La soluzione nel mio caso era di cambiare la libreria MySql Connector/NET dalla versione 6. * alla versione 5. *. Dopo la modifica la mia applicazione è stata collegata correttamente.

Mentre questa potrebbe non essere una soluzione valida per tutti, potrebbe funzionare per alcuni.

+0

Salvato un giorno !! Grazie mille. – user1282609

+0

@diangelisj ho provato tutte le soluzioni ma questa soluzione funziona per me, ti piacerebbe spiegarmi perché succede che possiamo usare 6.9 Mysql connector, dll e correggere questo bug – wiretext

3

ho incontrato questo problema oggi, ma I'v fisso come qui sotto:

SET old_passwords=FALSE; 
SET PASSWORD = PASSWORD('new pwd here'); 

Beh, forse la versione di connessione del server è inferiore al cliente, in modo da avere per eseguire questo: "SET old_passwords = FALSE;" Buona fortuna!

0

Ho appena risolto il mio problema proprio come questo:

1) Collegare al db con MySQL Workbench (selezionare l'opzione "utilizzare vecchi auth" e "invia passaggio in chiaro"

2) Uso del banco da lavoro , mi sono imbattuto i seguenti diverse volte (perché continuava a dire '0 righe interessate'): (anche cambiare userID e password per il vostro roba corretta)

SET SESSION old_passwords=0; 
SET PASSWORD FOR userID=PASSWORD('password'); 

SET SESSION old_passwords=false; 
SET PASSWORD FOR userID=PASSWORD('password'); 

3) Ora torna al tuo app e dovrebbe funzionare. ..

Ecco come l'ho fatto almeno. Sto usando IX mysql e loro usano la vecchia auth sul loro server quindi devi fare qualcosa sul tuo ...

0

Non sono riuscito a risolvere il problema come gli altri che hanno risposto, anche se ho provato tutto quello che è stato proposto. Alla fine si è scoperto che il server su cui si trovava il mio DB non è aggiornato phpMyAdmin dalla versione 3.5.5, ed è attualmente utilizzato ovunque nella versione 4.1.14 ed è un problema. La soluzione è aggiornare l'host phpMyAdmin o il proprio mySQL a una versione precedente per continuare a lavorare su DB remoto. Potresti aver bisogno di questa conoscenza per risolvere alcuni dubbi che sono sorti. :)

2

Aveva lo stesso problema utilizzando il pacchetto MySqlClient per C#. Rompiamo giù:

Abbiamo bisogno il database non utilizzare vecchie password stile, quindi eseguiamo

SET old_passwords = 0;

AVVISO non esiste una parola chiave "SESSIONE". Questo è ciò che ha consentito il funzionamento della prima query, "SESSIONE" implica il temporaneo e qualsiasi impostazione della sessione viene persa al termine di una sessione.

Poi abbiamo bisogno di impostare la password dell'utente @ host al nuovo stile della password

impostare una password per user @ host = PASSWORD ('password');

Questa due dovrebbero permettere al vostro MySqlClient

0

Oggi ho trovato lo stesso problema. Ho scaricato Workbench. Esistono alcune impostazioni per workbench per la connessione al database, come segue: 1.seleziona la scheda SSL, seleziona l'opzione 'no' in "Usa SSL". 2. selezionare la scheda avanzata, selezionare in Usa il protocollo di autenticazione ole. dopo che Workbench ha funzionato. e segui tai1001 'post. Questo è tutto ciò che ho trovato tutti i passaggi che funzionano.

1

Volevo solo aggiungere a @diangelisj la risposta e dire che la radice del problema è la versione di PhpMyAdmin installata sul server. Per utilizzare la più recente classe Data Connector di MySQL, è necessario disporre dell'ultimo PhpMyAdmin (o di eventuali problemi). Nel mio caso, ho PhpMyAdmin 4.0.10.7 e ho provato ad usare MySQL Data Connector 6.7.9, che ha dato l'errore.

Quello che ho fatto:

  1. Scarica la versione 5.2.7 da https://dev.mysql.com/downloads/connector/net/6.9.html

  2. Aggiungi dll come riferimento all'applicazione

  3. Presto!

0

Dimenticate l'applicazione SET old_password = 0 in quanto se il server è configurato per utilizzare la nuova password non c'è motivo di cambiare la bandiera sul server se la vostra applicazione non accede più. Esaminare il connettore NET che si sta utilizzando.

Il connettore 6.5.4 è quello giusto per utilizzare old_password, la versione rencent utilizza il nuovo.

La migliore pratica sarebbe evitare di installare il connettore sulla macchina, basta lasciare il NET per gestire la DLL se già la si possiede o comunque provare a trovare MySQL.Data.DLL versione 6.5.4.0 (384 kbyte)

Problemi correlati