2012-04-03 8 views
2

Ich bekomme ständig liefern:Halten Sie Zugang bekommen für root auf localhost Passwort verweigert ja, obwohl ich richtig Login-Infos

Exception in thread "AWT-Eventqueue-0" Local Exception Stack: Ausnahme [TOPLINK-4002 ] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DatabaseException Internal Ausnahme: java.sql.SQLException: Zugriff verweigert für Benutzer 'root' @ 'localhost' (mit Passwort: YES)

Aber meine Projektcode-Verbindungsinformationen und die MySQL-Datenbank haben die gleichen Informationen - daher gebe ich die korrekten Login-Informationen. Warum sagt es immer, dass mein Passwort falsch ist? Ich bin auf dem lokalen Host und mein Benutzername ist root und es gibt kein Passwort.

Hier ist der Code für die Projektvariablen ich verwenden:

static final String host = "jdbc:mysql://localhost:3306/myDb"; 
    static final String uName = "root"; 
    static final String uPass = ""; 
    static final String query = "SELECT * FROM customers"; 
... 
    Connection con = DriverManager.getConnection(host, uName, uPass); 
+1

Nur um zu klären, sind Sie mysql verwenden und DB zu einer MySQL-Anschluss, ich weiß, Oracle MySQL besitzt, aber immer noch Etwas seltsam, eine Oracle-Exception zu sehen, wenn man versucht, sich mit MySQL zu verbinden. Versuchen Sie es auch in der Kommandozeile: mysql -h localhost -p 3306 -u root und sehen Sie, ob Sie sich ohne Password anmelden können. – Churk

+0

Ja. Verwenden von mysql, das mit mysql-Datenbank verbindet. Ich habe einen neuen Server mit dem mysql/j Connector erstellt. Es ist seltsam, jetzt, wo du es erwähnst, Orakel dort zu sehen. – Bob

Antwort

1

Ist das Root-Passwort für localhost gesetzt? Es ist eine Weile her, aber localhost ist nicht immer das Gleiche wie 127.0.0.1, und das Passwort von root darf nicht localhost als Standard-Host haben.

+0

Ja. als ich die datenbank erstellt habe, habe ich passowrd leer gelassen. Setzen Sie den Host standardmäßig auf localhost. Der Port war 3306. Und die Datenbank wurde mit MySql j Connector auf myDb gesetzt. – Bob

+0

Haben Sie das Passwort selbst aktualisiert, oder haben Sie das installiert? Haben Sie den Befehl "FLUSH PRIVILEGES" ausgeführt? http://dev.mysql.com/doc/refman/5.0/en/flush.html –

1

Vielleicht haben Sie keinen Zugriff auf die DB, wenn Sie von localhost kommen.

Versuchen Sie, eine Verbindung mit der DB über die Netzwerkebene herzustellen, indem Sie ein externes Tool wie das Befehlszeilentool mysql verwenden.

+0

Ich habe versucht, Workbench durch Erstellen einer neuen Verbindung zu verwenden. Es verbindet sich erfolgreich, wenn ich einen Benutzernamen oder ein Passwort oder eine Host-Adresse angeben. Also wird dies verbinden - Host: lucalhostt, -password: hi, user: rooot. Aber wenn ich den Port ändere, sagt er mir, dass er keine Verbindung herstellen kann. – Bob

+0

das ist noch neugieriger, da Sie nichts finden sollten, wenn Sie Ihren Host auf etwas anderes als "localhost" oder irgendeine Adresse einstellen, an die die DB gebunden ist – Grims

+1

MySQL behandelt "localhost" speziell. Es bedeutet eine Verbindung mit dem lokalen Unix-Socket. JDBC verbindet sich jedoch über TCP/IP mit localhost. In diesem Fall müssen Sie "127.0.0.1" verwenden (wenn Sie einem Benutzer Zugriff gewähren). z.B. 'grant all auf deinerDb. * zu 'youruser'@'127.0.0.1' identifiziert durch 'yourpassword';', oder benutze die tatsächliche IP-Adresse deines Rechners sowohl im JDBC-Code als auch beim Zuweisen des Zugriffs auf den Benutzer in mysql. – nos

1

Was ich aus Ihren Kommentaren sehen kann Ich denke, Sie verbinden von einem Socket immer dann, wenn Sie eine Verbindung zu localhost herstellen (Standardverhalten des mysql-Clients bei der Bereitstellung von localhost).

Versuchen Sie Folgendes:

CREATE USER 'root'@'localhost IDENTIFIED BY ""; 
GRANT ALL PRIVILEGES to 'root'@'localhost'; 
FLUSH PRIVILEGES; 

und uns sagen, wenn Sie jetzt eine Verbindung herstellen können. Denken Sie daran, dass Sie jetzt ein root-Konto mit leerem Passwort und allen Rechten haben.

+0

Wo lege ich das hin? – Bob

+0

Sie führen dies in mysql aus, wenn Sie als Root-Benutzer verbunden sind. –

+0

Ich öffnete mysql cmd. Nach Eingabe der ersten Zeile - "CREATE USER 'root' @ 'localhost' IDENTIFIED BY" '; 'Ich erhielt folgendes:' ERROR 1396 (HY000): Operation CREATE USER fehlgeschlagen für' root '@' localhost'' – Bob

1

Das Problem tritt auf, wenn Sie ein leeres Passwort haben.
ändern es wie folgt aus:

cmd
mysqladmin -u root -p password "newpassword"

Und dann Test:
mysql -u root -p

Verwandte Themen