Bind Adresse von mysql Server

Bind Adresse von mysql Server

am 12.04.2006 18:39:24 von Hans Novak

Hallo Ng,

ich wiss nicht, ob ich hier off Topic bin, denn ich habe keine Frage zu
SQL Queries, sondern zum Bind in der my.cnf.

Ich benötige für eine Tabelle und einen bestimmten User Zugriff aus dem
Internet auf mysql.
Wenn ich die bind-address auf meine IP einstelle dann geht das auch,
allerdings ist dies ja wie bekannt, nicht sehr sicher.

Das andere Problem ist, dass andere lokale (mysql) User KEINEN Zugriff
mehr auf den Server haben, da sie ihn mit localhost ansprechen und
dieser unter localhost nicht ansprechbar ist (telnet localhost 3306)
ergibt keine Antwort.
Ich kann doch nicht allen Mysql Usern Zugriff von ausserhalb geben, nur
damit sie auf die db zugreifen können !?

Hans

Re: Bind Adresse von mysql Server

am 12.04.2006 19:02:05 von Carsten Wiedmann

Hans Novak schrieb:

> Das andere Problem ist, dass andere lokale (mysql) User KEINEN Zugriff
> mehr auf den Server haben, da sie ihn mit localhost ansprechen und dieser
> unter localhost nicht ansprechbar ist (telnet localhost 3306) ergibt keine
> Antwort.

Wenn du die "bind-address" nicht angibst, hört der Server auf allen
verfügbaren Interfaces (IP's).

BTW:
Für lokale Zugriffe nimmt man doch normal nicht TCP/IP sondern den Socket?


> Ich kann doch nicht allen Mysql Usern Zugriff von ausserhalb geben, nur
> damit sie auf die db zugreifen können !?

Du musst erst einmal grundsätzlich dem Server sagen/erlauben (s.o.), dass er
auch auf dem Interface zum Internet hin lauscht. Von wo aus sich ein
bestimmter User dann anmelden darf, legst du im User Management fest
(Host-Part).


Gruß
Carsten

Re: Bind Adresse von mysql Server

am 12.04.2006 19:05:30 von Helmut Chang

Hans Novak schrieb:

> Ich benötige für eine Tabelle und einen bestimmten User Zugriff aus dem
> Internet auf mysql.
> Wenn ich die bind-address auf meine IP einstelle dann geht das auch,
> allerdings ist dies ja wie bekannt, nicht sehr sicher.

Den Zusammenhang sehe ich grade nicht wirklich. Dieser Parameter ist
doch dazu gedacht, den MySQL-Daemon auf einer Maschine mit mehreren
IP-Adressen an eine davon zu binden. Inwiefwern hilft das also beim
Zugriff von außen?

Zugriffsrechte vergibt man aber doch mit GRANT. Also warum nicht ein
GRANT [benötigte Rechte] TO @ ON
.

. Und nicht mehr.

gruss, heli

Re: Bind Adresse von mysql Server

am 12.04.2006 19:19:18 von Sven Paulus

Helmut Chang wrote:
> Zugriffsrechte vergibt man aber doch mit GRANT. Also warum nicht ein=20
> GRANT [benötigte Rechte] TO @ ON=20
> .

. Und nicht mehr.

Zusaetzlich sollte man aber vielleicht noch lokal mit einem
Paketfilter Zugriff nur von den externen IPs zulassen, die auch
zugreifen koennen sollen. So steht man nicht beim naechsten
MySQL-Protokoll-Exploit voellig nackt da ...

Re: Bind Adresse von mysql Server

am 12.04.2006 19:35:47 von Helmut Chang

Sven Paulus schrieb:

>> Zugriffsrechte vergibt man aber doch mit GRANT. Also warum nicht ein
>> GRANT [benötigte Rechte] TO @ ON
>> .

. Und nicht mehr.
>
> Zusaetzlich sollte man aber vielleicht noch lokal mit einem
> Paketfilter Zugriff nur von den externen IPs zulassen, die auch
> zugreifen koennen sollen.

Stimmt. Das wäre dann "Und noch weniger" von meiner Warte aus (damit
keine Missverständnisse aufkommen). Ich meinte mit "Und nicht mehr"
nicht "mehr braucht man nicht tun", sondern mehr Rechte benötigt der
Benutzer nicht (d. h., auf die Tabelle beschränken) und der Benutzer
darf auch nur von einer bestimmten IP kommen (und nicht @'%', wie
oftmals gemacht wird, wenn Benutzer von außen zugreifen dürfen sollen).

gruss, heli

Re: Bind Adresse von mysql Server

am 13.04.2006 07:43:09 von Hans Novak

Helmut Chang schrieb:
> Benutzer nicht (d. h., auf die Tabelle beschränken) und der Benutzer
> darf auch nur von einer bestimmten IP kommen (und nicht @'%', wie
> oftmals gemacht wird, wenn Benutzer von außen zugreifen dürfen sollen).

hmmm... aber ich kann keine fetse IP angeben, weile sich meine IP alle
24 Stunden ändert (in @'[ip]').

Hans

Re: Bind Adresse von mysql Server

am 13.04.2006 09:01:47 von Helmut Chang

Hans Novak schrieb:

> hmmm... aber ich kann keine fetse IP angeben, weile sich meine IP alle
> 24 Stunden ändert (in @'[ip]').

Welche jetzt? Deine, wo der Server läuft oder die des Benutzers, der von
außen zugreifen soll? In beiden Fällen schlecht...

gruss, heli

Re: Bind Adresse von mysql Server

am 13.04.2006 09:08:00 von Thomas Rachel

Hans Novak wrote:

> ich wiss nicht, ob ich hier off Topic bin, denn ich habe keine Frage zu
> SQL Queries, sondern zum Bind in der my.cnf.
>
> Ich benötige für eine Tabelle und einen bestimmten User Zugriff aus dem
> Internet auf mysql.
> Wenn ich die bind-address auf meine IP einstelle dann geht das auch,
> allerdings ist dies ja wie bekannt, nicht sehr sicher.

Du könntest, je nach User, um den es sich handelt, mit einem SSH-Tunnel
arbeiten.

Richte einen Account auf Deiner Machine ein (so sie unter Deiner
Kontrolle steht), der evtl. auch eingeschränkt sein darf und hol Dir
beim Verbinden den Port 3306 auf die lokale Maschine. Den kannst Du dann
so nutzen, wie wenn er lkal verfügar wäre.

HTH,


Thomas
--
Und wir singen: Bye bye Miss American Pie
Ich hab's länger schon befürchtet, und jetzt ist es soweit
Madonna quietscht, und das Publikum schreit:
'This will be the day that I die'
(http://www.schlabonski.de/americanpie.html)

Re: Bind Adresse von mysql Server

am 13.04.2006 12:36:06 von Hans Novak

Thomas Rachel schrieb:
> Du könntest, je nach User, um den es sich handelt, mit einem SSH-Tunnel
> arbeiten.
>
> Richte einen Account auf Deiner Machine ein (so sie unter Deiner
> Kontrolle steht), der evtl. auch eingeschränkt sein darf und hol Dir
> beim Verbinden den Port 3306 auf die lokale Maschine. Den kannst Du dann
> so nutzen, wie wenn er lkal verfügar wäre.


ja, daran habe ich auch schon gedacht.
Welchen von den "tunneln" kannst du mir dafür empfehlen ? (OpenVpn ?)

Hans

Re: Bind Adresse von mysql Server

am 13.04.2006 16:05:59 von Thomas Rachel

Hans Novak wrote:

> ja, daran habe ich auch schon gedacht.
> Welchen von den "tunneln" kannst du mir dafür empfehlen ? (OpenVpn ?)

Ich persönlich verwende für solche Zwecke immer ssh.

Hängt natürlich von Deiner Konfiguration auf dem Server- und Client-Rechner
ab: ich gehe jetzt mal davon aus, daß es sich um ein
Unix-(ähnliches )System handelt. (Wenn nicht: für Windows gibt es m.W. auch
ssh-Server.)

Der neue, nur für diesen Zweck angelegte User bekommt als Shell in
der /etc/passwd entweder /bin/false oder, weils grad so schön
paßt ;-), /usr/bin/mysql verpaßt. (Wenn er hinreichend vertrauenswürdig ist
- oder Du es gar selbst bist, ist ein "normaler" Account natürlich auch
ok.)

Die Verbindung geht dan so vonstatten, daß der Clientrechner einen
ssh-Client startet (unter Linux: ssh, unter Windows beispielsweise was aus
dem PuTTY-Umfeld) mit der Maßgabe, daß der lokale Port 3306 (oder auch ein
beliebiger anderer) auf der Gegenseite weitergeleitet werden soll auf
localhost:3306. Fertig.

Allerdings mußt Du Dich von MySQL dann nach 127.0.0.1 verbinden, weil
localhost ja versucht, den Socket zu verwenden.


HTH,

Thomas

Re: Bind Adresse von mysql Server

am 21.04.2006 18:15:50 von Hans Novak

Thomas Rachel schrieb:
> Die Verbindung geht dan so vonstatten, daß der Clientrechner einen
> ssh-Client startet (unter Linux: ssh, unter Windows beispielsweise was aus
> dem PuTTY-Umfeld) mit der Maßgabe, daß der lokale Port 3306 (oder auch ein
> beliebiger anderer) auf der Gegenseite weitergeleitet werden soll auf
> localhost:3306. Fertig.
>
> Allerdings mußt Du Dich von MySQL dann nach 127.0.0.1 verbinden, weil
> localhost ja versucht, den Socket zu verwenden.

aha .... !?
also es handelt sich um 2 Linux Rechner (beide Debian).
Der eine ist hier bei mir und über DSL angeschlossen, der andere, auf
dem der mysql Server läuft ist mit einer festen, öffentlichen IP im Netz
verfügbar.
Die Anforderung ist folgende:
Auf meinem PC (windows) läuft eine Anwendung, welche den entfernetn
mysql Server nutzen muss.
Ich dachte mir, dass ich über meinen hauseigenen linux Server auf den
entfernten rechner zugreifen könnte.

Ich hatte zwischenzeitlich versucht, openVPN mit beiden Linux Servern zu
verwenden - aber das richtet auf den Rechnern eine virtuelle
Netzwerkkarte mit IP ein.
So müsste ich dann dem mysql Server sagen, er soll auf Localhost UND der
virtuellen IP horchen, was irgendwie aber nicht geht.

Wie würde das denn mit dem SSH funktionieren ?



Hans

Re: Bind Adresse von mysql Server

am 22.04.2006 08:41:06 von Thomas Rachel

Hans Novak wrote:

> aha .... !?
> also es handelt sich um 2 Linux Rechner (beide Debian).
> Der eine ist hier bei mir und über DSL angeschlossen, der andere, auf
> dem der mysql Server läuft ist mit einer festen, öffentlichen IP im
> Netz
> verfügbar.

Voraussetzung für SSH ist natürlich, daß Du auch Shell-Zugriff auf diesen
Rechner hast.


> Die Anforderung ist folgende:
> Auf meinem PC (windows) läuft eine Anwendung, welche den entfernetn
> mysql Server nutzen muss.

Dann verbindest Du Dich mittels PuTTY bzw. einem seiner begleitenden
Programme von Deinem Windows-Rechner auf den MySQL-Server und läßt Port
3306 weiterleiten. Über diesen Tunnel kannst Du dann lokal auf 3306
zugreifen, das wird dann dorthin weitergeleitet und für den dortigen
MySQL-Server ist es, als käme die Anfrage von lokal.


Hier zwar offtopig, ist aber offenbar eine häufig nachgefragte
Funktionalität.


Thomas