MySQL Server und Sicherheit..

Domi

Member
Hallo Leute, ich habe da mal eine kleine Frage zum MySQL Daemon :)
Auf mehreren Servern läuft der MySQL Daemon, und in der my.cnf steht drin,
Code:
bind-address = 127.0.0.1
durch diesen Parameter habe ich ja nun gesagt das man nur via "localhost" oder besser gesagt via "127.0.0.1" auf den Daemon zugreifen kann.

Meine Überlegung ist, dass ich den Daemon für externe Zugriffe öffne. Das gibt zwar eine Sicherheitslücke nach außen, aber wie kann ich dem ganzen denn vorbeugen?

Ein Gedanke von mir wäre, die "bind-adress" für alle offen zu legen und einen "UserX" in der Datenbank anzulegen, der nur in der passenden Datenbank "read" rechte hat. Kann man das so machen, oder ist das auch schlecht? :o

Mfg. Anubis
 
Ah.. an die Firewall habe ich noch gar nicht gedacht.. Mal gucken was da existiert, ob da nur eine linux eigene Firewall aktiv ist, oder ob Hetzner vor die root und vServer auch eine eigene Firewall vor schaltet :)

Nachtrag: Okay, "iptables" ist hier das Stichwort.. Ich hab mich zwar noch nie groß damit befasst, aber irgendwann ist immer das erste mal.
 
Last edited by a moderator:
Wenn du MySQL für externe zugreifbar machen willst, wirst du ziemlich schnell Angriffe auf den Port kriegen.
Den Port zu tunneln oder per VPN zugreifbar zu machen, willst du wohl nicht?

Warum müsse andere von Außen zugreifen können? Sag doch mal.
 
Oh ha.. Wenn ich mir gerade so meine Abo's der Threads anschaue, sehe ich.. das ich hier gar nicht mehr geantwortet hatte :(

Also Grund von dem Thema war, dass wir eine Domain bei einem externen Anbieter liegen haben, diese liegt also nicht bei uns auf einem der root-Server. Und ich wollte über ein selbst gebautes Script das auf dem Webspace dieser Domain liegt, eine Verbindung zu der MySQL Datenbank auf meinem eigenen Server herstellen.

Aber wahrscheinlich werde ich dieses Szenario anders lösen. Und zwar mit einem genannten Ansatz.. VPN Tunnel ist hier das Stichwort :)

Ich werde die externe Domain auf einen vServer von uns packen, dort richte ich dann ein OpenVPN Client ein, auf unserem root-Server richte ich dann den OpenVPN Server ein, und lasse alle externen Server (drei vServer und aktuell ein weiterer root-Server) via VPN ein Netz aufbauen.

Das müsste doch dann problemlos funktionieren / passen. So kann ich dann auch bedenkenlos eine NFS Verbindung herstellen für Backup in jegliche Richtung, man kann dann in alle Richtungen via SQL verbinden und fertig ist der Lack.

Ein weiterer Grundgedanke war folgender,
1 Server für Domains und unwichtige Email Adressen
1 vServer nur für Email

auf dem vServer ist eine Datenbank hinterlegt für die Emails, und diese SQL Datenbank könnte ich dann von einem anderen Server steuern. So muss ich auch kein Webinterface auf dem vServer einrichten :)

Gruß, Domi
 
Ich würde eher die eine Datenbank über eine Master-Slave-Replikation auf den vServer legen. Der kann dann selbst ganz normal lokal arbeiten.

Ist sicherlich Geschmackssache, aber ich möchte meine SQL-Replikationen nicht mehr missen. ;)
 
Moin, könntest Du mir sagen wie dieses Prinzip ungefähr funktioniert..? Habe sonst immer pro Server eine MySQL Datenbank gehabt und diese separat betrieben und nie untereinander kombiniert oder verbunden.

Werden dann beide MySQLd untereinander verbunden und der eine ist de Master und der andere ist der Slave oder wie..?

Nachtrag: Also wenn ich das durch diese Anleitung richtig verstanden habe, könnte ich durch diese Master-Slave Verbindung eine Datenbank auf dem Server mit einer Datenbank auf einem anderen Server Synchron halten, ist das richtig??
 
Last edited by a moderator:
Die Anleitung führt im Ergebnis zu einer Master-Master-Replikation. Du könntest Dir also ein paar Schritte sparen, da für dich Master-Slave ausreichend ist.

Und ja, die DB ist dann auf beiden Servern synchron.

Ich würde die DB aber nicht wie beschrieben initialisieren, sondern den dump gleich mit --master-data erstellen lassen.

Als Backup-Lösung taugt das ganze übrigens nicht. Löscht Du auf dem Master eine Tabelle, dann ist diese auf dem Slave auch weg.
 
Moin, das mit dem "Backup" ist für mich verständlich.. das kann man dann mit einem RAID vergleichen, darum würde mich mal interessieren ob diese "Spiegelung" der Daten in beide Richtungen funktioniert, oder ob es nur in eine Richtung geht :)

Wenn es immer nur in eine Richtung geht, ist das zwar OK, aber wenn es in beide Richtungen funktioniert, wäre das noch viel viel genialer :D So könnte ich auf Server 1 etwas eintragen und auf Server 2 steht es dann auch, und umgekehrt.. Server 2 bekommt einen Eintrag und leitet das an Server 1 weiter :)

Kurz gesagt, nicht nur...
- Server 1 -> Server 2

sondern lieber so etwas...
- Server 1 <-> Server 2

Oder ist das Szenario mit dem Sync in beide Richtungen die Master-Master Replikation?!

Gruß, Domi
 
Hallo Domi,

es geht sowohl nur in eine als auch in beide Richtung.

One-Way nennt sich Master - Slave, beides ist Master-Master.

Oder anders: nur auf dem Master geschriebene Daten werden repliziert.
 
Moin... Leider habe ich es heute im Büro nicht mehr geschafft das mal auszuprobieren, da ich alles für meinen Urlaub vorbereitet habe :D

Aber mal eine Frage zu dem Szenario mit Master-Master :)
Wenn ich nun zwei Server habe und beide haben die Datenbank "test", wo ich dann einen neuen Eintrag mache dauert es dann erst ein paar Minuten bis der Übertragen ist, oder geht das sofort?

Es geht mir z.B. um auto_increment Geschichten. Mir fällt gerade kein Praxisbeispiel ein wo das bei mir zutreffen könnte, aber mal angenommen man richtet so etwas ein
- server1
-- db_test
--- table1

- server2
-- db_test
--- table1

Nun mache ich auf Server 1 einen Eintrag, die ID wird dank auto_increment ein weiter gezählt, und etwas ähnliches passiert auf Server 2, kommen sich die IDs dann nicht in die Quere..? :D

Gruß, Domi
 
Nein, das funktioniert ohne Probleme ist auch sofort auf dem anderen Server verfügbar - so die Netzwerkverbindung auch steht. ;)

Code:
master-connect-retry            = 60
report-host                     = obelix
replicate-same-server-id        = 0
auto-increment-increment        = 2
auto-increment-offset           = 1
server-id                       = 5


master-connect-retry            = 60
report-host                     = idefix
replicate-same-server-id        = 0
auto-increment-increment        = 2
auto-increment-offset           = 2
server-id                       = 2

funktioniert bei mir ohne weiteres.

Die Replikation bei mysql ist wirklich keine Hexerei. ;)
 
Back
Top