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?
Linux 15.036 Themen, 107.107 Beiträge
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
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.
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
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 :)
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.
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 ;)
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, 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.
Nagut, dann versuche ich eben an der Netzwerkverbindung der VMs zu arbeiten :P
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
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
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)
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*
Okay, mir war was entgangen... die treffende Antwort von mic :)
~ZITATTEST~
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.
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?
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.