Van afstand verbinden met Mysql Database
Systeem:
- Windows Server 2008 Web Edition
- IIS 7
- Mysql 5.1.56
De volgende dingen heb ik al geprobeerd:
- Volledige toegang (ALL PRIVILEGES) voor betreffende database gebruiker en toegang van elke host ("%")
- Uitzetten Windows Firewall en openen poort 3306 op externe firewall
- De volgende code toegevoegd een my.ini:
Quote:
# The MySQL server
[mysqld]
basedir = "C:\rootfolder\MySQL\"
datadir = "C:\rootfolder\MySQL\data\"
port = 3306
#socket = "MySQL"
socket = "TCP/IP"
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
#enable-named-pipe
bind-address=0.0.0.0
[mysqld]
basedir = "C:\rootfolder\MySQL\"
datadir = "C:\rootfolder\MySQL\data\"
port = 3306
#socket = "MySQL"
socket = "TCP/IP"
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
#enable-named-pipe
bind-address=0.0.0.0
Wanneer ik probeer te verbinden gebruik ik:
- Het publieke IP van de server
- Username met alle privileges
- Bijbehoorend wachtwoord
- Poort 3306
Squeal Pro (het programma waarmee ik wil verbinden) geeft de volgende melding terug:
Quote:
Unable to connect to host IP, or the request timed out.
Be sure that the address is correct and that you have the necessary privileges, or try increasing the connection timeout (currently 10 seconds).
MySQL said: Can't connect to MySQL server on 'IP' (4)
Be sure that the address is correct and that you have the necessary privileges, or try increasing the connection timeout (currently 10 seconds).
MySQL said: Can't connect to MySQL server on 'IP' (4)
Iemand een suggestie?
Heb je de port ook geforwarded in je router?
Dat regelt het datacentre waar onze server hangt (zij beheren de router/firewall) dus daar ga ik wel van uit ;-)
n.b. je geeft privileges voor elke host, daar zou je eigenlijk een IP of subnet moeten geven. Elke host is OK om te testen, maar een serieus veiligheidslek in productie.
Mysql server alsook gehele server al meerdere malen herstart, zonder effect...
De fout is: Unable to connect to host IP, or the request timed out dus de tcp/ip verbinding komt er niet. MySQL server opnieuw starten zal niet helpen. Overleg met je datacenter over de verbinding. Probeer de verbinding met een telnet tool naar het poortnummer, dat moet een basale melding tonen waarna je weet dat de verbinding okee is. Vervolgens met Squeal Pro aan de slag. Is de poort 3306 misschien geblocked VANUIT het netwerk waarin je zit om contact te krijgen? Je probeert dit toch hopelijk niet vanuit hetzelfde netwerk als waar de MySQL server staat? Dan werkt het zeer zeker niet.
Vreemd, ik heb er geen problemen mee. Gewoon poort 3306 open gezet in windows firewall en ook niks aangepast in mysql.ini.
Het lijkt 'm toch in de connectie te zitten naar de server toe. Zowel telnet op het workstation (btw, niet op hetzelfde netwerk) als ook externe tools op internet geven 3306 als gesloten aan. Ik heb het nog eens nagevraagd bij de data provider.
Gewijzigd op 27/08/2012 11:08:44 door Aad B
9 van de 10 hosting bedrijven hebben dit uitstaan, aangezien dit zeer onveilig is. Beter is gewoon een RDP (aangezien je op Windows draait) sessie te starten en zo 'lokaal' je MySQL te benaderen.
Nu ben je alsnog remote op je complete server en kun je alles beheren.
Het RDP alternatief van Chris is een workaround maar RDP en Windows is nou niet de meest betrouwbare koppeling. Je uitgangspunt de database op afstand beheren kan je in MySQL (later) heel strak configureren en bijvoorbeeld toestaan vanaf 1 andere server/client
Aad B op 27/08/2012 14:50:13:
RDP en Windows is nou niet de meest betrouwbare koppeling.
:-)
Aad B op 27/08/2012 14:50:13:
NIET DOEN: "bind-address=0.0.0.0 eens te binden aan je eigen IP adres", dan werkt het helemaal niet meer. The address you specify in bind tells mysql where to listen. 0.0.0.0 is a special address, which means "bind to every available network".
Het RDP alternatief van Chris is een workaround maar RDP en Windows is nou niet de meest betrouwbare koppeling. Je uitgangspunt de database op afstand beheren kan je in MySQL (later) heel strak configureren en bijvoorbeeld toestaan vanaf 1 andere server/client
Het RDP alternatief van Chris is een workaround maar RDP en Windows is nou niet de meest betrouwbare koppeling. Je uitgangspunt de database op afstand beheren kan je in MySQL (later) heel strak configureren en bijvoorbeeld toestaan vanaf 1 andere server/client
LOL, bind op 0.0.0.0 is NIET DOEN, bind koppelen aan het IP adrs zorgt ervoor dat hij maar naar 1 ip adres luisterd. Je eigen misschien eerst eens verdiepen voordat je CAPS gaat gebruiken. NU heeft hij bind op 0.0.0.0 staan, zie zijn OP.
Hoe kom je erbij dat RPD sessies niet veilig zijn? Nogmaals verdiep je eens in de stof voordat je dingen gaan roepen. Bij een goede opstelling is dit wel degelijk veilig!
Als je daar een remote adress invult is je MYSQL server meteen niet meer bereikbaar.
John Berg op 27/08/2012 15:08:23:
@Chris: de bind gaat over de koppeling aan de netwerk interfaces van de locale mysql server. Wil je op alle interfaces luisteren moet je 0.0.0.0 invoeren.
Als je daar een remote adress invult is je MYSQL server meteen niet meer bereikbaar.
Als je daar een remote adress invult is je MYSQL server meteen niet meer bereikbaar.
Dat is niet wat ik bedoel, mijn punt was, je zet bind NOOIT op 0.0.0.0, aangezien hij dan naar alles luistert. Vandaar dat ik zeg, bind hem aan je eigen IP als je bind gebruikt. Niet aan je prive IP, maar aan je locale server IP!
Het gaat hier om veiligheid.
Chris NVT op 27/08/2012 15:11:15:
Dat is niet wat ik bedoel, mijn punt was, je zet bind NOOIT op 0.0.0.0, aangezien hij dan naar alles luistert. Vandaar dat ik zeg, bind hem aan je eigen IP als je bind gebruikt. Niet aan je prive IP, maar aan je locale server IP!
Het gaat hier om veiligheid.
John Berg op 27/08/2012 15:08:23:
@Chris: de bind gaat over de koppeling aan de netwerk interfaces van de locale mysql server. Wil je op alle interfaces luisteren moet je 0.0.0.0 invoeren.
Als je daar een remote adress invult is je MYSQL server meteen niet meer bereikbaar.
Als je daar een remote adress invult is je MYSQL server meteen niet meer bereikbaar.
Dat is niet wat ik bedoel, mijn punt was, je zet bind NOOIT op 0.0.0.0, aangezien hij dan naar alles luistert. Vandaar dat ik zeg, bind hem aan je eigen IP als je bind gebruikt. Niet aan je prive IP, maar aan je locale server IP!
Het gaat hier om veiligheid.
Pffffft ... als je een remote connectie wil zet de bind ALTIJD op 0.0.0.0
Je wil immers luisteren op de locale 127.0.0.1 en op eth1 wat het outside world adres is.
Engels is voor sommigen een heel lastige taal ...
John Berg op 27/08/2012 15:14:22:
Pffffft ... als je een remote connectie wil zet de bind ALTIJD op 0.0.0.0
Je wil immers luisteren op de locale 127.0.0.1 en op eth1 wat het outside world adres is.
Engels is voor sommigen een heel lastige taal ...
Je wil immers luisteren op de locale 127.0.0.1 en op eth1 wat het outside world adres is.
Engels is voor sommigen een heel lastige taal ...
Nou dan bind jij toch je MySQL op 0.0.0.0, zodat elke harrie je MySQL server kan benaderen. Waarom denk je nu dat 9 van de 10 providers dit uitschakelen? Om je te pesten ofzo?
Nee ze willen dat je een RPD of SSH sessie/connectie maakt, zodat je 'lokaal' je server rechtstreeks benaderd en niet via MySQL rechtstreeks.
Zodra ik jou config.php vind en je root heb, kan ik zo remote inloggen op je MySQL zonder problemen. Kwestie van een ping naar de MySQL host voor het IP adres en klaar.
En hoezo eth1? Standaard is je eerste ethernet controller eth0, en misschien zit hij bij mij wel op de 4de controller.
P.S. Houdt je domme opmerkingen voor je A.U.B.
Gewijzigd op 27/08/2012 15:21:25 door Chris PHP
@Chris: mijn MySQL host zit op 159.253.4.112 Het password van de MySql server is Hebr@w1
John Berg op 27/08/2012 15:26:30:
@Chris: mijn MySQL host zit op 159.253.4.112 Het password van de MySql server is Hebr@w1
Zal het je laten zien zodra ik terug ben.
Dat is waar de beveiliging ligt, en niet in de binding address