Webserver an MySQL-Server binden
Special-J / 17 Antworten / Baumansicht
Hallo liebe Linux-Freunde,ich weiß nicht, ob ich im richtigen Thread bin, aber hauptsächlich geht es bei mir um Linux Debian.
Also folgender Ist-Zustand:
VM1: Debian6 mit Apache2-Webserver
VM2: Debian6 mit MySQL-Server + Fileserver (NFS)
Soll-Zustand:
Der Webserver (VM1) sollte mithilfe von PHPmyAdmin auf dem SQL-Server (VM2) zugreifen können und die Datenbanken von dort aus verwalten, damit es keinen direkten Zugriff auf den MySQL-/Fileserver gibt.
Eigenee Versuche:
my.conf auf der VM2 (erfolglos) konfiguriert. PHPmyAdmin per config.inc.php (erfolglos) konfiguriert. My.conf auf dem MySQL-Client der VM1 (erfolglos) konfiguriert. Auf dem MySQL-Server in der DB "mysql" einen neuen ControlUser "pma" mit dem Host "VM1-IP" (erfolglos) erstellt.
Frage:
Welche Spezifischen Einstellungen reichen aus, um das Ganze endlich zu beenden?
„Webserver an MySQL-Server binden“
Mit Apache und MySQL Datenbanken kenne ich mich nicht aus. Ich denke das wird ein Netzwerkproblem sein. Welche Virtuellen Maschinen nutzt du, VMware oder eine andere Software ?
Ich würde selbst erst einmal in das Debian Wiki schauen und die Konfiguration lernen:
http://wiki.debian.org/LaMp
http://wiki.debian.org/NFS
http://wiki.debian.org/Apache
„Mit Apache und MySQL Datenbanken kenne ich ...“
Ich nutze einen Xen-Server bei der Arbeit und mit dem Xen-Center steuere ich sozusagen die beiden VMs.
Wikis und Ebooks habe ich schon sämtliche durchgenommen. So konkret stehts nirgens.
„Webserver an MySQL-Server binden“
Kannst du denn überhaupt mit dem MySQL-Client (auf VM1) eine Verbindung zum MySQL-Server (auf VM2) aufbauen?
Welche Fehlermeldungen bekommst du denn?
Ist bei Debian evtl. SELinux aktiviert?
http://www.ehow.com/how_2090983_connect-remote-database-under-selinux.html
„Kannst du denn überhaupt mit dem ...“
Nein, ich habe keinen direkten Zugriff auf den MySQL-Server. Der Client kann diesen "physikalisch" nicht finden, obwohl per NFS die Verzeichnisse mountbar sind.
Die Fehlermeldung weist auf den MySQL-Sockel hin:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket 'VM2:/var/run/mysqld/mysqld.sock' (2)
Und nein, ich habe SELinux nicht bei mir installiert, werde aber versuchen anhand der Einleitung es zu installieren.
Danke erstemal :)
„Nein, ich habe keinen direkten Zugriff auf ...“
Socket Fehlermeldung ist ein Netzwerkproblem. SELinux kannst du vergessen. SELinux soll die Sicherheit bei Linux erhöhen.
SELinux ist umstritten.
Ich kann dir nur einen Link zu Xen unter Debian geben:
http://wiki.debian.org/Xen
PS: Ich würde dir als Virtuelle Maschine VMware Workstation oder VirtualBox empfehlen. Mit Vmware Workstation habe ich unter Debian immer sehr gute Erfahrungen gemacht.
„Socket Fehlermeldung ist ein ...“
Da habe ich leider keine Wahl, da unser Unternehmen nur solche VM-Systeme verwendet.
Soll auch angeblich performanter und einfacher sein, als die Konkurrenz.
Aber trotzdem danke für den Link ;)
„Da habe ich leider keine Wahl, da unser ...“
Ich kenne mich mit XEN nicht gut aus, aber ich würde eventuell auf den Linuxkernel als Fehlerquelle tippen.
http://wiki.debian.org/Xen#Note_on_kernel_version_compatibility
„Nein, ich habe keinen direkten Zugriff auf ...“
Nein, so war das nicht gemeint!! SELinux wäre eine mögliche Fehlerquelle gewesen, weil das nämlich standardmäßig dem Apache verbietet, sich remote mit einem SQL-Server zu verbinden. Also NICHT installieren.
„werde aber versuchen anhand der Einleitung ...“
Nagut, dann versuche ich eben an der Netzwerkverbindung der VMs zu arbeiten :P
„Nagut, dann versuche ich eben an der ...“
Ist bei dem MySQL-Server überhaupt der 'Remote Access' erlaubt:
http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html
„Ist bei dem MySQL-Server überhaupt der ...“
Super, danke dir vielmals!
Die folgenden Einstellungen haben zum Erfolg gebracht:
bind-address = IP-Adresse von VM2
# diese Zeile sollte einkommentiert sein:
# skip-external-locking
Danke euch allen - jetzt kann ich endlich mit meinem Projekt fortfahren ;)
VG
„Super, danke dir vielmals! Die folgenden ...“
Na prima, dann wünsche ich noch viel Spass mit deinem Projekt.
Kannst du noch deine Frage als beantwortet markieren?
(in deinem ersten Posting hier, 'Optionen zum Beitrag', dort 'Als beantwortet markieren' anklicken)
„Nein, ich habe keinen direkten Zugriff auf ...“
Hmmm... sorry falls mir in dem Thread was entgangen sein sollte, aber wenn ich es richtig verstanden habe, dann läuft auf VM2 der MySQL-Server und Du versuchst von VM1 per Socket /var/run/mysqld/mysqld.sock zuzugreifen? Das kann nicht gehen, den Socket wird es nicht geben.
Du musst den Zugriff über das Netzwerk (TCP/IP) aufbauen, der lokale Socket auf VM2 steht auf VM1 nicht zur Verfügung.
*EDITORTEST*
Nachtrag zu: „Webserver an MySQL-Server binden“
Okay, mir war was entgangen... die treffende Antwort von mic :)
~ZITATTEST~
„Webserver an MySQL-Server binden“
auf VM1: stelle sicher, dass VM2 per Netzwerk erreichbar ist (z.B. Ping auf IP Adresse)
auf VM2: passe /etc/mysql/my.cnf so an, dass MySQL nicht nur lokal sondern auch über Netzwerk erreichbar ist. Ändere dazu die Konfigurationsdirektive bind-address von 127.0.0.1 zu 0.0.0.0 und starte MySQL neu.
Sofern du vollen administrativen Zugriff von VM1 brauchst, meldest du dich per mysql -p an MySQL an und erstellst einen root-Benutzer für VM1:
grant all privileges on *.* to 'root'@'ip.von.vm.1' identified by 'geheimespasswort' with grant option;
Über die Risiken eines remote-Admin-Zugangs muss ich hoffentlich nicht extra aufklären?
auf VM1: installiere phpmyadmin und konfiguriere einen Zugriff auf VM2. Falls du phpmyadmin über die Paketverwaltung instaliert hast, kannst du das soweit ich weiss über dpkg-reconfigure phpmyadmin machen.
„auf VM1: stelle sicher, dass VM2 per ...“
Danke dir, "the_mic".
Ich hab den Wurm endlich beseitigt.
Und was die Sicherheit dieser Geschichte angeht, habe ich auch vorgesorgt, indem ich einfach die Adresse zum PHPmyAdmin nur für bestimmte Host-Adressen im LAN den Zugriff genehmigt habe,
Oder sollte ich deiner Meinung nach, was zusätzlich noch tun?
„Danke dir, "the_mic". Ich hab den Wurm ...“
phpmyadmin sollte grundsätzlich immer extra gesichert werden, da hierfür regelmässig Exploits auftauchen und Bots aktiv nach Installationen suchen. Das war von dem her eine gute Idee deinerseits.
Grundsätzlich kann natürlich jeder mit Zugriff auf VM1 versuchen sich root-Rechte im MySQL auf VM2 zu verschaffen. Wenn das Passwort lange und sicher ist, sinkt deren Erfolgswahrscheinlichkeit gegen null. Und auch bei lokalem MySQL mit nur lokalem Admin hast du natürlich dasselbe Risiko. Von dem her sollte das so eigentlich hinhauen.

