# Passwortvergabe bei Verbindung zwischen jdbc und mysqlServer



## muck1980 (29. Nov 2007)

Hallo zusammen,
Ich habe eine Frage bezüglich des Verbindungsaufbaus des JDBC/Connectors mit dem mySQL-Server.

Zunächst mal ein paar Sachen vorweg:
1. mein mysql läuft unter Linux
2. unter mysql Benutzer mit allen Rechten und passwort anglegt (nenne ihn mal xxx und das passwort yyy).
3. Tabelle erstellt mit eben diesem Benutzer und Passwort

4. mein Eclipse läuft unter Windows. Die Verbindung zwischen den Systemen klappt. Ich kann also von Windows aus auf den MySQL-Server zugreifen und Datenbanken, Tabellen erstellen usw.

Die Verbindung baue ich folgender Maßen auf:

```
String createDB = "CREATE DATABASE ServiceOrchestratorDB";
	String create = "CREATE TABLE testTable (name VARCHAR(20), vorname VARCHAR(20));";
	
	public void doIt(String db_url) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException{
		Class.forName("com.mysql.jdbc.Driver").newInstance();
		Connection my_con = DriverManager.getConnection(db_url, "XXX","");
		Statement st = my_con.createStatement();	
		st.execute(createDB);		
		my_con.close();
	}

	public static void main( String [] args) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException{
		String db_url= "jdbc:mysql://IP-des-Linux-Rechners:3306/";
		jdbcTest t = new jdbcTest();
		t.doIt(db_url);
		
	}
```
Bitte des Code nicht kommentieren, ist nur ein TestCode :lol: 

Das komische an der Sache ist, dass ich für die Verdindung kein Passwort benötige bzw. es nicht eingeben darf. Wenn ich also 

```
Connection my_con = DriverManager.getConnection(db_url, "XXX","YYY");
```
implementiere, klappt die Verbindung nicht. In der Console steht dann:

```
Access denied for user 'XXX'@''hostnameDesWindowsRechners' (using password: YES)
```

Probiere ich unter Linux über die Konsole ohne Passwort zuzugreifen mit

```
mysql -uXXX
```
,dann bekomme ich die Fehlermeldung, dass kein Zugriff erlaubt ist.

Die host-freigabe habe ich folgendermaßen gelöst:
GRANT ALL ON *.* TO 'XXX'@'hostnameDesWindowsRechners';
GRANT SELECT, INSERT ON *.* TO 'XXX'@'hostnameDesWindowsRechners';

Eigentlich bin ich ja schon froh, dass die Verbindung überhaupt klappt, aber würde gerne wissen, warum ich bei dem Aufbau der Verbindung kein Passwort angeben darf.

Danke im Voraus für die Hilfe

grüße
thomas


----------



## maki (29. Nov 2007)

> Probiere ich unter Linux über die Konsole ohne Passwort zuzugreifen mit ...
> ..
> ,dann bekomme ich die Fehlermeldung, dass kein Zugriff erlaubt ist.


Das liegt daran, das du dich dort am localhost anmelden willst, nicht am hostnameDesWindowsRechners 
Nimm das % Zeichen anstatt den hostnamen.
Probier mal aus was passiert, wenn du es folgendermassen machst:

GRANT ALL ON *.* TO 'XXX'@'%' IDENTIFIED BY 'YYY';


----------



## muck1980 (29. Nov 2007)

Ist das gleiche in grün.

Ohne passwort klappt es. Mit Passwort nicht.

grüße
thomas


----------

