Externer Zugriff auf DB funktioniert nicht

MySQL, PostgreSQL, SQLite
tecci
Posts: 48
Joined: 2003-09-07 14:40

Externer Zugriff auf DB funktioniert nicht

Post by tecci » 2006-06-17 11:44

Hallo,

ich habe ein Problem mit dem externen Zugriff auf eine MySQL-Datenbank. Eigentlich habe ich für den User im Feld "Host" ein % eingetragen, aber trotzdem funktioniert der externe Zugriff nicht.

Wenn ich in die /etc/mysql/my.cnf noch "skip-networking" eintrage und danach MySQL neu starte, bleibt die Operation ebenfalls erfolglos.

Die Logfiles sagen hierzu überhaupt nichts =(
MySQL-Version: MySQL 4.0.24_Debian-10sarge2-log

Hat jemand noch eine Idee?

flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Externer Zugriff auf DB funktioniert nicht

Post by flo » 2006-06-17 11:53

Tecci wrote:Wenn ich in die /etc/mysql/my.cnf noch "skip-networking" eintrage und danach MySQL neu starte, bleibt die Operation ebenfalls erfolglos.
Die Option heißt, das Netzwerk "auszulassen", also _kein_ Netzwerkdienst für MySQL.

IMHO bindet Debian den MySQLd in letzter Zeit an localhost, Netz ist also prinzipiell da, lauscht aber nur an der 127.0.0.1 - schau das doch mal nach.

flo.

lord_pinhead
Posts: 774
Joined: 2004-04-26 15:57

Re: Externer Zugriff auf DB funktioniert nicht

Post by lord_pinhead » 2006-06-17 14:41

Wie Flo es schon gesagt hat musst du nachsehen woran der SQL Server lauscht, das ist relativ einfach mittels netstat -tupa |grep ":mysql" rauszubekommen. Wenn er nur auf den localhost hört (Debian Default) musst die folgende Option einsetzen im mysqld Kontext:

Code: Select all

bind-address            = <deine ip>
Danach dürfte ein Reload reichen und der Mysqld ist richtig an der externen IP gebunden und ansprechbar. Allerdings würde ich das alleine aus sicherheitsgründen und in ganz bestimmten Netzen machen, sprich, nur im LAN und auf keinen Fall über öffentliche Netze, dazu zählt auch das ISP Netzwerk im Rechenzentrum, Grund: Die Anmeldung am Mysql erfolgt Klartext und deine Zugangsdaten könnten mitgeschnitten werden. Such im Forum mal nach stunnel und bau eine Verbindung zwischen den Server auf, dann an den Mysql und gut isses. Ansonsten auf Postgresql umschwenken ;)

User avatar
isotopp
Posts: 471
Joined: 2003-08-21 10:21
Location: Berlin

Re: Externer Zugriff auf DB funktioniert nicht

Post by isotopp » 2006-06-17 17:14

Lord_Pinhead wrote:Wenn er nur auf den localhost hört (Debian Default) musst die folgende Option einsetzen im mysqld Kontext:

Code: Select all

bind-address            = <deine ip>
Besser wäre es, das bereits vorhandene "bind-address = 127.0.0.1" einfach auszukommentieren. Danach bindet sich MySQL per Default an * (0.0.0.0), also an alle IP-Nummern. Dadurch ist es als 127.0.0.1 wie bisher zu erreichen, aber auch auf allen IP-Nummern des Hosts.

Eine genauere Zugangskontrolle ist dann etwa per iptables möglich.
Grund: Die Anmeldung am Mysql erfolgt Klartext und deine Zugangsdaten könnten mitgeschnitten werden.
Das ist falsch. Die Anmeldung bei MySQL erfolgt auf die in mysql/libmysql/password.c beschriebene Art und Weise:
The main idea is that no password are sent between client & server on connection and that no password are saved in mysql in a decodable form.

On connection a random string is generated and sent to the client. The client generates a new string with a random generator inited with the hash values from the password and the sent string. This 'check' string is sent to the server where it is compared with a string generated from the stored hash_value of the password and the random string.
...

Code: Select all

  SERVER:  public_seed=create_random_string()
           send(public_seed)

  CLIENT:  recv(public_seed)
           hash_stage1=sha1("password")
           hash_stage2=sha1(hash_stage1)
           reply=xor(hash_stage1, sha1(public_seed,hash_stage2)

           // this three steps are done in scramble()

           send(reply)


  SERVER:  recv(reply)
           hash_stage1=xor(reply, sha1(public_seed,hash_stage2))
           candidate_hash2=sha1(hash_stage1)
           check(candidate_hash2==hash_stage2)

tecci
Posts: 48
Joined: 2003-09-07 14:40

Re: Externer Zugriff auf DB funktioniert nicht

Post by tecci » 2006-06-19 18:02

Vielen herzlichen Dank für eure schnellen Antworten =)

lufthansen
Posts: 390
Joined: 2002-09-24 17:31
Location: NRW

Re: Externer Zugriff auf DB funktioniert nicht

Post by lufthansen » 2006-07-27 03:33

Ich habe da auch noch mal eine Frage :)
Ich möchte das mein Mysqld sowohl auf dem loopback interface lauscht aber auch auf der ip meines vpn gateways :(
und irgendwie haben mich sufus und google da nicht weiter gebracht :(

User avatar
isotopp
Posts: 471
Joined: 2003-08-21 10:21
Location: Berlin

Re: Externer Zugriff auf DB funktioniert nicht

Post by isotopp » 2006-07-28 15:09

LuftHansen wrote:Ich habe da auch noch mal eine Frage :)
Ich möchte das mein Mysqld sowohl auf dem loopback interface lauscht aber auch auf der ip meines vpn gateways :(
und irgendwie haben mich sufus und google da nicht weiter gebracht :(
Du kannst entweder ein bind-address Statement angeben, dann bindet sich der mysqld an genau dieses eine Interface.

Oder Du kannst kein bind-address Statement angeben, dann bindert sich der mysqld an alle Interfaces, darunter localhost und Dein VPN-Interface, aber auch alle anderen Interfaces.

Es ist syntaktisch legal, mehr als ein bind-address Statement anzugeben. Dann wird eines, das letzte gesehene, genommen. mysqld wird sich an genau ein Interface binden.

Du mußt also Deinen mysqld ohne bind-address Statement konfigurieren und die weitere Zugangskontrolle über iptables realisieren.

lufthansen
Posts: 390
Joined: 2002-09-24 17:31
Location: NRW

Re: Externer Zugriff auf DB funktioniert nicht

Post by lufthansen » 2006-07-28 15:11

vielen dank für die ausführliche erklärung. :-D
hatte sowas schon befürchtet.