Page 1 of 1
Externer Zugriff auf DB funktioniert nicht
Posted: 2006-06-17 11:44
by tecci
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?
Re: Externer Zugriff auf DB funktioniert nicht
Posted: 2006-06-17 11:53
by flo
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.
Re: Externer Zugriff auf DB funktioniert nicht
Posted: 2006-06-17 14:41
by lord_pinhead
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:
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 ;)
Re: Externer Zugriff auf DB funktioniert nicht
Posted: 2006-06-17 17:14
by isotopp
Lord_Pinhead wrote:Wenn er nur auf den localhost hört (Debian Default) musst die folgende Option einsetzen im mysqld Kontext:
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)
Re: Externer Zugriff auf DB funktioniert nicht
Posted: 2006-06-19 18:02
by tecci
Vielen herzlichen Dank für eure schnellen Antworten =)
Re: Externer Zugriff auf DB funktioniert nicht
Posted: 2006-07-27 03:33
by lufthansen
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 :(
Re: Externer Zugriff auf DB funktioniert nicht
Posted: 2006-07-28 15:09
by isotopp
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.
Re: Externer Zugriff auf DB funktioniert nicht
Posted: 2006-07-28 15:11
by lufthansen
vielen dank für die ausführliche erklärung. :-D
hatte sowas schon befürchtet.