2009-10-19 45 views
5

Tôi vừa cập nhật php lên 5.3 và không thể kết nối với máy chủ mysql từ xa nữa. Tôi nhận được các lỗi sau:Cập nhật lên php5.3 ngắt kết nối với 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 

Dường như việc này liên quan đến trình điều khiển mysqlnd mới. Có cách nào để buộc nó để sử dụng trình điều khiển libmysql cũ. Ngoài ra, việc hoàn nguyên về php5.2.11 dường như không khắc phục được sự cố có vẻ phù hợp với hầu hết mọi người.

Trả lời

1

Tôi đã nhập một câu trả lời thú vị nhưng ai đó tốt hơn tôi đã trả lời. Tldr; của phản hồi này là biên dịch lại php của bạn cho ứng dụng của bạn.

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

Ionut G. Stan schrieb:

Cảnh báo: mysql_connect() [function.mysql kết nối]: OK gói 6 byte ngắn hơn so với dự kiến ​​trong {filename} trên đường dây 18 Cảnh báo: mysql_connect() [function.mysql-connect]: mysqlnd không thể kết nối với MySQL 4.1+ bằng cách sử dụng xác thực cũ trong {filename} trên dòng 18

Điều này nói lên mọi thứ. Bạn không thể sử dụng xác thực cũ với mysqlnd.

Nâng cấp mật khẩu máy chủ của bạn lên phương thức xác thực gần đây và an toàn hơn hoặc biên dịch lại PHP với hỗ trợ libmysql (MySQL Client Library). Kiểm tra ./configure --help | grep -C3 mysql và http://www.php.net/manual/en/mysql.installation.php.

0

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

Đặt lại mật khẩu cho mỗi người dùng mà cần phải sử dụng một-4.1 trước chương trình khách hàng trước 4.1 phong cách cho . Điều này có thể được thực hiện bằng câu lệnh SET PASSWORD và old_password() chức năng:

mysql> SET PASSWORD CHO -> 'some_user' @ 'some_host' = old_password ('newpwd'); Ngoài ra, sử dụng UPDATE và FLUSH PRIVILEGES:

mysql> CẬP NHẬT mysql.user SET Password = old_password ('newpwd') -> Ở ĐÂU Host = 'some_host' VÀ User = 'some_user'; mysql> FLUSH RIÊNG TƯ; Thay thế mật khẩu bạn muốn sử dụng cho "newpwd" trong ví dụ trước . MySQL không thể cho biết bạn mật khẩu ban đầu là gì, vì vậy, bạn sẽ cần phải chọn mật khẩu mới.

Cho máy chủ để sử dụng mật khẩu thuật toán băm cũ:

Bắt đầu mysqld với --old-mật khẩu tùy chọn.

Có nhiều lựa chọn hơn trên trang này ....

+0

Tôi tin rằng chức năng ngôn ngữ php/mysql_connect sẽ không hỗ trợ cho xác thực PASSWORD OLD như của php5.3. đây là vấn đề mà tôi dường như đang giải quyết. máy chủ chạy php5.2.11 và sử dụng mã hóa mật khẩu 16 byte cũ trong khi máy khách đang chờ mã hóa mật khẩu 41 byte mới. khi tôi cố gắng thay đổi mật khẩu bằng cách sử dụng SET PASSWORD, nó vẫn cho tôi mật khẩu 16 byte – giroy

0

Xem this.

Chỉ cần đặt lại mật khẩu của người dùng.

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

tôi đã thử điều này không có may mắn – giroy

+0

điều này đã cho tôi cùng một mã hóa 16 byte mà tôi đã có, không phải là 41 byte tôi muốn – giroy

+0

Tôi đã đọc ở đâu đó rằng có một thiết lập sẽ làm điều này nhưng tôi đã không có may mắn tìm thấy nó – giroy

Các vấn đề liên quan