Seite 1 von 1

QSQL verbindet nur auf localhost

Verfasst: 31. August 2010 14:12
von Der Mann aus der Kugel
Hallo zusammen,

mit folgendem Code habe ich bisher eine DB-Verbindung geöffnet, mit der ich dan auch arbeiten konnte:

Code: Alles auswählen

	db = QSqlDatabase::addDatabase(DRIVER);
	db.setDatabaseName(DATABASE);
	db.setUserName(USER);
	db.setPassword(PASSWORD);
	db.setHostName("localhost");

        if (db.open()) {
	qDebug() << "SQLZugriff: Verbindung zu SQL-Server hergestellt.";

		
	}

	else {
		qDebug() << "SQLZugriff: Verbindung zu SQL-Server gescheitert." << db.open();

	}
jetzt möchte ich von einem anderen rechner aus verbinden, bzw. zu einem anderen rechner. wenn ich aber

Code: Alles auswählen

	db.setHostName("123.123.123.123");
oder

Code: Alles auswählen

 	db.setHostName("andererhostname"); 
setze, liefert db.open() nur FALSE zurück. das passiert übrigens auch auf meinem eigenne rechner, auf dem sowohl das programm als auch der mysql-server laufen, also kann es sich nicht um ein netzwerk-firewall-problem handeln. dns-auflösung für den hostnamen funktioniert, aber auch aufruf über ip klappt eh nicht, hat also damit nichts zu tun.

was habe ich übersehen?

vielen dank im voraus!!!

Verfasst: 31. August 2010 14:18
von pfid
Was sagt denn

db.lastError().text()

?

(Merke: So gut wie jede Qt-Klasse hat entsprechende Methoden, die dir genaueres über den Fehler verraten).

Verfasst: 31. August 2010 14:20
von RHBaum
Hol dir mal ein Programm, womit auf eine mysql Datenbank draufkommst ... Am besten waeren die Tools, die mysql selber liefert, bspweise MySQLAdmin oder sowas. Installier die aufn selben rechner, und versuch auf Deine DB zu connecten.

Wenn es nicht geht, check die einstellungen deines MySQL servers ! Glaub ueber localhost/127.0.0.1 geht er nicht ueber TCP sondern nimmt intern eine pipe. (unter unix/linux) Wenn der server nicht auf verbindungen von ausserhalb configuriert ist, wuerde er verbindungen zu localhost / 127.0.01 ueber die pipe abwickeln, das wuerde funktionieren, aber ueber die offizielle IP des selbigen Rechners dann ueber TCP eben nicht.

Und glaub Qt verwendet nur TCP (bin aber nicht sicher).

Ciao ...

Verfasst: 31. August 2010 14:53
von Der Mann aus der Kugel
Hi, vielen Dank für die Antworten. Habe den Fehler über db.lastError() gefunden. Verbindung war vom MySQL-Server verweigert worden.

Habe das korrigiert über die my.cnf indem ich bind-address auskommentiert habe und noch dazu die Privilegien für die jeweiligen Rechner also benutzer@IP in die mysq-user-Tabelle eingetragen habe.

Jetzt klappts, also danke an beide Tippgeber!