PDA

Bekijk Volledige Versie : connect sql vanf andere server



snaaps
10/11/05, 00:50
Hallo ik heb een klein probleempje.

Wij proberen via een andere server connectie te krijgen met de database op onze server.

in de conf.php hebben wij dus bij host het IP adres van de sql server opgegeven.

In direct admin hebben wij het IP adres toegevoegd van de andere server waar de website draait.

Ip adres hebben wij in de allow lijst gegooid van de firewall.

Echter als we nu de pagina oproepen krijgen wij can not connect to the database te zien.
Dit terwijl alle wachtwoorden en gebruikersnamen goed zijn.

zie ik nu iets over het hoofd?

FransVanNispen
10/11/05, 00:51
Poort van MySQL open gezet op de firewall?

WilloW
10/11/05, 00:55
Het is misschien ook slim om in Mysql even dat ip in te stellen zodat hij niet alleen van localhost mag connecten.

snaaps
10/11/05, 00:55
Uiteraard is port 3306 geblokeerd dooor de firewall.
echter als ik het ip adres van de andere server in de allow lijst plaats zonder toevoegingen dan heeft deze in feite toegang tot alle poorten.
(als ik me niet vergis)

ip toevoegen in mysql?
welk bestand is dat?

Frangkje
10/11/05, 01:13
Bij het aanmaken van een user doe je normaal iets van: GRANT ALL ON database.* TO 'gebruiker'@'localhost' IDENTIFIED BY password('wachtwoord') etc, als je vanuit een andere host dan local host wilt connecten moet je dus geen localhost in deze query zetten maar de host van waar je mag connecten of % om alle hosts toegang te geven.

wonko
10/11/05, 09:20
Je kan ook je permissies manipuleren in MySQL door de tabellen User, Db en Host aan te passen in de database 'mysql'. Achteraf moet je wel een 'flush privileges' geven in MySQL.

Als je gewoon een extra gebruiker toegang wil geven tot een bepaalde DB, dan gebruik je best de oplossing van Frangkje.

Om te testen zou ik eerst kijken met de gewone command-line mysql, en dan pas je applicatie testen. Werkt iets eenvoudiger, en 1 probleem per keer oplossen is intressanter ;).

xYnta
10/11/05, 10:40
Op de andere server ook het IP adres van de server waar je vanaf probeert te connecten toegevoegd?

snaaps
16/11/05, 14:37
Ok de klant had een verkeerd ip adres opgegeven.
De verbinding lukt nu wel echter we krijgen nu een foutmelding:
Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client

Nu heb ik het volgende geprobeert in sql:
log in als admin:
# mysql -u da_admin -p

en het volgende aangepast:

UPDATE mysql.user
SET password=OLD_PASSWORD('paswoordhier')
WHERE user='hier_gebruikersnaam'
AND host='localhost';

vervolgd door:
flush privileges;

echter zonder resultaat ik blijf de bovenstaande error houden.

Frangkje
16/11/05, 15:14
Je moet ook niet alleen de localhost user updaten, maar ook de remote host user.

snaaps
16/11/05, 15:15
ehh hoe bedoel je precies?

Frangkje
16/11/05, 15:55
Je runt de volgende query:

UPDATE mysql.user
SET password=OLD_PASSWORD('paswoordhier')
WHERE user='hier_gebruikersnaam'
AND host='localhost';

Zoals je misschien zelf al wel gezien hebt update je hier het password van een bepaalde gebruiker die connect vanaf de localhost met een volgens de oude mysql encriptie. Je moet dit ook nog even doen voor deze gebruiker die connect vanaf de host waar jij vandaan wil connecten, bijv:

UPDATE mysql.user
SET password=OLD_PASSWORD('paswoordhier')
WHERE user='hier_gebruikersnaam'
AND host='123.245.167.123';

snaaps
16/11/05, 18:19
Dat had ik ook al geprobeert, echter geen resultaat.

snaaps
21/12/05, 12:44
heeft er iemand een een stap voor stap tuturial om ervoor te zorgen dat een externe ip gebruik kan maken van de database?

Ik kom er niet meer uit.

petert101
21/12/05, 13:03
Origineel geplaatst door snaaps
Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client


wat is er nou zo moeilijk aan lezen?
Het staat er toch heel duidelijk wat er aan de hand is. Doe een google search en je bent een stuk verder.

petert101
21/12/05, 13:04
Origineel geplaatst door snaaps
heeft er iemand een een stap voor stap tuturial om ervoor te zorgen dat een externe ip gebruik kan maken van de database?

Ik kom er niet meer uit.
snap ik dat je er niet uit komt. Je lost een probleem op dat je niet hebt.

remko
21/12/05, 13:06
Hoi, als je 100% zeker weet dat alles qua firewall / toegang goed staat zou je het volgende kunnen doen in je mysql:

GRANT ALL ON database.table TO user@ip IDENTIFIED BY 'password';
of in geval hij alle tabellen mag gebruiken:
GRANT ALL ON database.* TO user@ip IDENTIFIED BY 'password';

Succes ermee!

roelp
21/12/05, 13:08
Er zijn een aantal zaken die je moet instellen.

Om te beginnen moet je de DB user access geven om te connecten vanaf een bepaald IP

Je moet ervoor zorgen dat poort 3306 open staat in je firewall

En dan tenslotte moet je er ook voor zorgen, dat je mysqld niet gestart is met de optie --skip-networking

De foutmelding die je nu nog krijgt, lijkt me inderdaad meer een probleem te zijn met de oude/nieuwe paswoord hash. Best eens proberen mysql client te upgraden, of de oude paswoord hash te gebruiken zoals Frangkje zegt

snaaps
21/12/05, 21:49
ok wat heb ik gedaan:

Stap1 de ipadressen toegevoegd als extra host in direct admin.

Stap2: ip adressen toegang gegeven d.m.v de firewall
(# /usr/local/sbin/apf -a 123.123.123.123)

stap3: paswoord aanpast naar oude type:
# mysql -uda_admin -p
(paswoord ingevoerd)

SET PASSWORD FOR db_username@123.123.123.123 = OLD_PASSWORD('wachtwoord');

Dit krijg ik dan als output:
Query OK, 0 rows affected (0.00 sec)

Stap 4:
GRANT ALL ON db_naam.* TO db_username@123.123.123.123 IDENTIFIED BY 'wachtwoord';

output:
Query OK, 0 rows affected (0.01 sec)


Stap5: flush privileges;

output:
Query OK, 0 rows affected (0.25 sec)

zonder resultaat dus.

sp-services
21/12/05, 22:28
ben je er zeker van dat de user bestaat aangezien hij niets update ?

bami82
22/12/05, 06:15
Welke versie mysql gebruik je, connect je vanaf php? Indien je mysql 4.1.x gebruikt in combinatie met php 4.3.x of 4.4.x dan krijg je volgens mij deze foutmelding.