MySQLi-Abfrage an Linux-VM: Zielcomputer lehnt Verbindung ab

n0varino

Cadet 3rd Year
Registriert
Sep. 2015
Beiträge
45
Hallöchen!

Ich arbeite aktuell an einer Intranet-Seite, auf der unter anderem eine PHP-mySQLi-Abfrage an eine LinuxVM gemacht wird, auf welcher eine Oracle-Datenbank läuft.
Der Syntax an sich ist korrekt, den habe ich bereits bei diversen anderen Abfragen gemacht - allerdings auf eine localhost-Datenbank.
Nun möchte ich eben auf die Oracle-Datenbank auf einem anderen Server zugreifen, es klappt aber nicht.

Auf der Seite, auf der die Ausgabe stattfinden soll, erhalte ich die Meldung
Code:
mysqli_connect(): (HY000/2002): Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte

Auf der Linux-Kiste habe ich den Port für ein- und ausgehende Verbindungen geöffnet via
iptables -A OUTPUT -p tcp --dport 1521 -j ACCEPT
iptables -A INPUT -p tcp --dport 1521 -j ACCEPT

Auf dem Windows Server 2012 R2, auf welchem das Intranet läuft, habe ich testweise die Firewall komplett deaktiviert, wenn ich in eine cmd
Code:
telnet IP 1521
eingebe, wo IP entsprechend der IP der LinuxVM ist, erhalte ich einen blinkenden Cursor, und keine Fehlermeldung, der Port ist also offen.
Ich habe die ganze Abfrage sogar mal als root versucht - selbes Problem.

Hat jemand eine Idee? Mir fehlen etwas die Anhaltspunkte.

lg
 
Da muss normalerweise nix geöffnet werden.
Was ist die IP der VM, was ist die IP des Hosts bzw, MySQL Client (oder: NAT oder bridged im den VM Einstellungen). Was sagt sudo netstat -anp|grep 1521 auf dem mysql server?

Zuguterletzt ist der MySQL port normalerweise 3306, nicht 1521.
 
Normalerweise musst du bei MySQL oder Oracle den Zugriff von externen IPs zulassen, da der Zugriff Standardmäßig auf localhost begrenzt ist.

Bei mysql passiert das in der my.conf

Gruß
 
Mit MySQLi auf ne Oracle Datenbank zuzugreifen wird wohl generell eher nicht funktionieren... Das ist für Zugriff auf MySQL Server gedacht...
 
Mojo1987 schrieb:
Mit MySQLi auf ne Oracle Datenbank zuzugreifen wird wohl generell eher nicht funktionieren... Das ist für Zugriff auf MySQL Server gedacht...

Ich Idi... Da MySQL ja Oracle gehört hab ich da nicht genau gelesen. Natürlich geht da mysqli nicht und natürlich anderer Port. Dafür gibts dann http://php.net/manual/de/function.oci-connect.php
 
Um von aussen an den MySQL Server zu kommen:
(Debian)
nano /etc/mysql/my.cnf

Folgendes kommentieren:

# bind-address = 127.0.0.1

restart: service mysql restart
 
@Der_IT_Tuner: du hast schon beim TE gelesen dass Orcale als DB läuft und nur fälschlicherweise mySQLi verwendet wird?

Der TE verwendet einfach nur die falsche API.
 
Hallo zusammen,

danke erstmal, das war mir gar nicht bewusst.
Ich habe es jetzt via oci_connect() versucht.
Direkt beim Aufbau der Verbindung (oci_connect('DB_USER','DB_PASS','DB_HOST'); (die Variablen sind natürlich dementsprechend definitiert) erhalte ich die Meldung
Fatal error: Call to undefined function oci_connect() in C:\Program Files\XAMPP\htdocs\anwesend.php on line 21

Ich habe mal etwas gegoogelt, zum einen habe ich was von 32/64 Bit gelesen, außerdem soll in der php.ini eine auskommentierte Zeile aktiviert werden (habe ich getan, anschließend Apache neugestartet).

Jemand eine Idee?

lg
Ergänzung ()

Falls mal jemand vor dem selben Problem steht:
h t t p s : //jaswanttak . wordpress.com/2010/08/31/activate-oracle-on-xampp-for-windows-oci8/

lg
 
benutz pdo statt der alten funktionen und aktieviere die pdo_oci extension

PHP:
$connection = new PDO('oci:dbname=192.168.10.145/orcl', 'username', 'password');
 
Zurück
Oben