2009-10-19 8 views
5

Właśnie zaktualizowałem php do wersji 5.3 i nie mogę już łączyć się z moim zdalnym serwerem mysql. Otrzymuję następujące błędy:Zaktualizuj do php5.3 przerwy łączące się z mysql db

mysqli_connect(): OK packet 6 bytes shorter than expected 
mysqli_connect(): (HY000/2000): mysqlnd cannot connect to MySQL 4.1+ using old authentication 

wydaje się to ma do czynienia z nowym kierowcą mysqlnd. Czy istnieje sposób zmuszenia go do używania starego sterownika libmysql? Również powrót do php5.2.11 nie rozwiązuje problemu, który wydaje się działać dla większości ludzi.

Odpowiedz

1

Cóż, napisałem długą, chłodną odpowiedź, ale ktoś lepszy ode mnie już odpowiedział. The tldr; tej odpowiedzi jest rekompilacja twojego php dla twojej aplikacji.

http://news.php.net/php.internals/43535

Ionut G. Stan schrieb:

Uwaga: mysql_connect() [function.mysql połączyć] pakiet OK 6 bajtów krótszy niż oczekiwano {pliku} na linii 18 Uwaga: mysql_connect() [function.mysql połączyć] mysqlnd nie może połączyć się z MySQL 4.1+ pomocą uwierzytelniania starego pliku} w {na linii 18

To wszystko mówi. Nie możesz użyć starego uwierzytelnienia z mysqlnd.

Uaktualnij hasła serwera do nowszej i bezpieczniejszej metody uwierzytelniania lub ponownie skompiluj PHP za pomocą biblioteki libmysql (MySQL Client ). Sprawdź ./configure --help | grep -3 mysql i http://www.php.net/manual/en/mysql.installation.php.

0

http://dev.mysql.com/doc/refman/5.1/en/old-client.html mówi:

Resetowanie hasła do pre-4.1 styl każdego użytkownika, który musi użyć wstępnie 4.1 program kliencki. Można to zrobić za pomocą oświadczenie Ustaw hasło i OLD_PASSWORD() Funkcja:

mysql> Hasło ustawione dla -> 'some_user' @ 'some_host' = OLD_PASSWORD ('newpwd'); Alternatywnie, użycie UPDATE i FLUSH PRZYWILEJE:

mysql> UPDATE mysql.user SET Password = OLD_PASSWORD ('newpwd') -> gdzie host = 'some_host' AND User = 'some_user'; mysql> FLUSH PRZYWILEJE; Zastąp hasło , którego chcesz użyć dla "newpwd" w poprzedzających przykładach . MySQL nie może powiedzieć, jakie było oryginalne hasło, więc musisz wybrać nowe.

poinformować serwer do korzystania ze starszej hasło algorytmu mieszającego:

start mysqld z --old-haseł opcji.

Istnieje wiele więcej opcji na tej stronie ....

+0

Wierzę, że funkcja php language/mysql_connect przestanie obsługiwać uwierzytelnianie OLD PASSWORD od wersji php5.3. to jest problem, z którym wydaje się, że mam do czynienia. serwer uruchamia php5.2.11 i używa starego 16-bajtowego szyfrowania haseł, podczas gdy klient oczekuje nowego, 41-bajtowego szyfrowania haseł. kiedy próbuję zmienić hasło przy pomocy SET PASSWORD, nadal daje mi to 16-bajtowe hasło – giroy

0

Zobacz this.

Po prostu zresetuj hasło użytkownika.

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypassword'); 
+0

Próbowałem już tego bez powodzenia – giroy

+0

dało mi to samo 16-bajtowe szyfrowanie, które już miałem, a nie 41-te, które chciałbym – giroy

+0

Czytałem gdzieś, że jest ustawienie, które by to zrobiło, ale nie miałem szczęścia znajdując to – giroy

Powiązane problemy