Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ZDO bring fehler bei verbinden zu mysql (https://www.delphipraxis.net/33696-zdo-bring-fehler-bei-verbinden-zu-mysql.html)

HaZe 11. Nov 2004 12:28


ZDO bring fehler bei verbinden zu mysql
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi

folgendes problem, also ich versuch per ZDO-komponente daten von meiner mysql db abzurufen, wenn ich das programm starte dann bekomm ich folgende fehlermeldung
Zitat:

Im Projekt Projekt1.exe ist eine Exception der Klasse EZSQLException aufgetreten: SQL-ERROR 'NO ACCESS FOR USER ODBC@localhost' (using password: NO). Prozess wurde angehalt....
ich werde in der datei 'ZDbcMySqlUtils.pas'
Delphi-Quellcode:
raise EZSQLException.CreateWithCode(ErrorCode,
verwiesen. also mach ich weiter mit der restlichen routine, dann wieder ein fehler
Zitat:

SQL-Error: Access denied for user 'ODBC@localhost'(using password: NO);
so dann auf ok, und die daten werde doch abgerufen, ich versteh nicht ganz was der fehler soll, ich hab schon mysql geupdate, habs auch über meinen linux server versucht immer die selbe fehlermeldung, sowie gegoogelt aber erfolglos :(.


persönlich kann ich kein fehler finden

MfG und Danke

HaZe :coder2:

PS.: Quellcode hängt an

Sharky 11. Nov 2004 12:33

Re: ZDO bring fehler bei verbinden zu mysql
 
Hai HaZe,

sei doch bitte so nett und hänge den Quellcode als Anhang an ein Posting. Bei solch überlangen Codeblöcken muss man ja sonst endlos scrollen.

Danke.

Igotcha 11. Nov 2004 12:36

Re: ZDO bring fehler bei verbinden zu mysql
 
Also grundsätzlich ist die Anwtort doch eindeutig ;-)

Zitat:

Im Projekt Projekt1.exe ist eine Exception der Klasse EZSQLException aufgetreten: SQL-ERROR 'NO ACCESS FOR USER ODBC@localhost' (using password: NO). Prozess wurde angehalt....
Der User "ODBC" darf nicht auf die Datenbank zugreifen.

Dafür gibt es eigentlich nur 5 Gründe:
  • der User existiert gar nicht im DB-System
  • die Userdaten wurden falsch eingegeben
  • der User darf nicht lokal zugreifen, oder
  • der User darf nicht von extern zugreifen
  • das verschlüsselte PW ist falsch. Hintergrund: mit den neuen Version von mysql wurde der Verschlüsselungsmechanismus geändert. Zeos kennt den noch nicht, ABER Du hast die Möglichkeit mit der Option OLD_PASSWORD ein PW nach altem Schema zu hinterlegen (falls Du den USer neu angelegt hast) - das Problem hatte ich nach einem Update nämlich auch

Gruß Igotcha

HaZe 11. Nov 2004 12:46

Re: ZDO bring fehler bei verbinden zu mysql
 
Liste der Anhänge anzeigen (Anzahl: 1)
@Igotcha

also ich hab noch den vorgänger von mmstats hier, mit dem kann ich ohne probleme auf die datenbank zugreifen.
ja der user ODBC gibts nicht, aber gebe ja die anweisung das er sie von mysqlform holen soll.

Igotcha 11. Nov 2004 13:03

Re: ZDO bring fehler bei verbinden zu mysql
 
Zitat:

Zitat von HaZe
@Igotcha
ja der user ODBC gibts nicht, aber gebe ja die anweisung das er sie von mysqlform holen soll.

Wat ist dat ;-)

Sagt mir jetzt nicht viel, was mysqlform ist und was heißt "holen soll"? Der User "ODBC" muss der mysql-DB bekannt sein.

Ich vermute mal folgendes. Du hast ein DB-Tool mit dem Du als user "root" zugreifst und dem Du wahrscheinlich kein PW hinterlegt hast. Da funktioniert auch alles weiter so.

Du kannst das leicht erkennen, da die "alten" Passwörter in mysql.user so aussehen "3dfbade655a80898" - die neuen haben ein "*" vorangestellt.

Mach mal folgendes:

Code:
UPDATE mysql.user SET password=OLD_PASSWORD('DasPasswort') WHERE user='ODBC'
Gruß Igotcha

HaZe 11. Nov 2004 13:12

Re: ZDO bring fehler bei verbinden zu mysql
 
Zitat:

Sagt mir jetzt nicht viel, was mysqlform ist und was heißt "holen soll"? Der User "ODBC" muss der mysql-DB bekannt sein.
also ich weis nicht wo er den user ODBC herholt, normal hab ich meine mysqldaten in der form MYSQLFORM
siehe da
Delphi-Quellcode:
  mysqlform.SQLHost.Text             := ReadString('mysql', 'ip', '');
  mysqlform.SQLPwd.Text              := ReadString('mysql', 'pass', '');
  mysqlform.SQLUser.Text             := ReadString('mysql', 'user', '');
  mysqlform.SQLDB.Text               := ReadString('mysql', 'dbname', '');
und hier wird zugewiesen
Delphi-Quellcode:
      dbMain.Hostname    := mysqlform.SQLHost.Text;
      dbMain.user        := mysqlform.SQLUser.Text;
      dbMain.Password    := mysqlform.SQLPwd.Text;
      dbMain.Database    := mysqlform.SQLDB.Text;
      dbMain.Connected   := true;
Zitat:

Ich vermute mal folgendes. Du hast ein DB-Tool mit dem Du als user "root" zugreifst und dem Du wahrscheinlich kein PW hinterlegt hast. Da funktioniert auch alles weiter so.
Also ich hab mehere user hier, mit keinen komm ich drauf egal mit pwd oder ohne, ich bekomme nur zugriff mit der alten version von mmstats, was ja eigendlicb dann auch nicht gehn dürfte oder ?


MfG

HaZe

Igotcha 11. Nov 2004 13:22

Re: ZDO bring fehler bei verbinden zu mysql
 
Zitat:

Zitat von HaZe
also ich weis nicht wo er den user ODBC herholt, normal hab ich meine mysqldaten in der form MYSQLFORM
siehe da...

So, stop und mal langsam :-)

Das sieht doch so aus, als ob die Daten aus einer INI-Datei geholt werden. Das ist ja auch ok so.

Das Problem ist mysql. Dort wurde in der neuesten Version der Hashmechanismus zum Verschlüsseln der Passwörter geändert. Sprich: Wenn Du heute mit einem bekannten Passwort auf die Datenbank zugreifen möchtest, dann hasht er das Passwort mit dem neuen Verfahren, welches natürlich ein anderes Ergebnis liefert, als das in der DB hinterlegte. Die Zeos-Komponenten kennen und können das neue Verfahren noch nicht.

Deshalb musst Du in Deiner Datenbank in "mysql", in der Tabelle "user" alle Passwörter anpassen, wie ich es oben gesagt habe.

Alternativ könntest Du auch nur das Root-Passwort ändern und änderst bei allen Abfragen in Deinem Programm, wo ein Passwort verwendet wird die entsprechende WHERE-Bedingung ab:

Code:
statt...
WHERE pass='password' nun
WHERE pass=OLD_PASSWORD('password')
Gruß Igotcha

P.S. Versuche Dich doch mal wie folgt direkt auf der Kommandozeile einzuloggen:

C:\mysql\bin>mysql -u ODBC -pALTESPASSWORT

HaZe 11. Nov 2004 13:32

Re: ZDO bring fehler bei verbinden zu mysql
 
also ich benutz MYSQL-Administator ich hab use old passwords benutz, aber leider hat sich nichts geändert
hmmm soll ich mal zeobs deinstallieren ? vielleicht liegts ja daran
aber es is noch eine frage offen wo holt er den user ODBC her, ich habs ihm nie gesagt und ich find auch nix wos gesagt wird :gruebel:

Igotcha 11. Nov 2004 14:07

Re: ZDO bring fehler bei verbinden zu mysql
 
Zitat:

Zitat von HaZe
aber es is noch eine frage offen wo holt er den user ODBC her, ich habs ihm nie gesagt und ich find auch nix wos gesagt wird :gruebel:

Ist das denn Dein Programm? Wenn ja, solltest Du das wissen ;-)

Grundsätzlich gilt: Keine User/Passwort-Kombination kann auf die mysql-Datenbank zugreifen, wenn diese der DB nicht bekannt ist. Im Klartext heisst das, dass nur die User zugreifen dürfen, die in der Tabelle "user" der Datenbank "mysql" (ja, sie heisst so) aufgeführt sind.

So, dann schaust Du jetzt mal am besten mit Deinem Tool nach, wer und was in dieser Tabelle aufgeführt ist.

Gruß Igotcha

HaZe 11. Nov 2004 16:21

Re: ZDO bring fehler bei verbinden zu mysql
 
also es war ein fehler im quellcode und nicht so wie du es sagst das es an der table von mysql liegt, hättest vielleicht den quellcode anschauen sollen, dann hättest du es vielleicht gesehn das es nicht an mysql liegt :hello:


cya
HaZe


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:49 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz