52AV手機A片王|52AV.ONE

用戶名  找回密碼
 立即註冊
快捷導航
  • 我愛av論壇BBS
  • 手機A片
  • 自拍偷拍外流區
  • 貼圖區
  • 52av裸聊室
  • 中文-中國主播
  • ♥️AI榨精淫域♥️

     
查看: 4595|回復: 0
打印 上一主題 下一主題

[mysql] 解決 php連接mysql指令mysqli_connect()等等的錯誤==>mysqlnd cannot connect to MySQL 4.1

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2018-10-11 12:57:07 | 顯示全部樓層 回帖獎勵 |倒序瀏覽 |閱讀模式

當php 5.5以上 遇上 mysql 5.2 時,連接mysql的指令 mysqli_connect() 會產生錯誤mysqli_connect(): mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD('your_existing_password').& T+ v) f& V; r2 m/ S9 k

1 G3 N  P; w/ a這是因為php 5.3以前舊版的密碼採16位編碼,而新版php 5.3以後採41位編碼,而mysql 5.2 以前預設也是16碼,所以才會造成此種錯誤.# J: |4 K$ c/ P( e1 S& y; |! c; h2 i* j
先診斷一下mysql: (我的php 5.6.38 , mysql 5.1.73)% M0 }# c6 O' Z6 d( M# ^
登入mysql 然後輸入 :
# h; W* K1 ^7 p) F  X. Tmysql> SHOW VARIABLES LIKE 'old_passwords';
; [( a: G- Q( i# R$ |2 {+------------------+-------+
7 L% Q* q7 s5 T) v) Y! m| Variable_name | Value |
( e. k! h0 N- g* w+------------------+-------+& \2 K' l/ X4 ]9 I1 N( |: D% F
| old_passwords | ON   |* U: @; L; D3 @2 {
+------------------+-------+( f$ w. ]; V1 \- o# o5 ?
1 row in set (0.00 sec)
6 x) l3 _9 o0 M% a0 X# z7 }" W
9 j4 c0 t% d4 D1 P" d: d3 @4 ]6 Mold_password  ==> ON  就表示 /etc/my.cnf  裏的 old_passwords=1  設定為16碼,須將它設為 0 然後重啟mysqld ==> service mysqld restart
/ s3 ~5 r/ H! u( L2 i8 C或 在 mysql prompt下輸入:
; d6 Y3 b1 h7 H4 p. |1 v  |mysql> SET old_passwords=FALSE;  # F4 ?- G6 |7 m( r3 H( N  ~
檢查mysql.user內 每個密碼長度:% i! H, A3 A. T( o) z
mysql> SELECT 'User', 'Host', Length('Password') FROM mysql.user;0 s7 O3 Q' D- F8 f+ w( l: @3 x! L
如果還沒改成41位,Length('Password')這個欄位應該都是16或是0(表示沒設密碼) 4 k9 A, K2 M' [$ o8 M

3 m( \! B$ Q9 Z) _5 n再重設原來的密碼:
" C: a9 G4 V0 g) {0 ~mysql> SET PASSWORD FOR 'root'@'192.168.1.1' = PASSWORD('原來的密碼');    // 小心要核對原來 帳號@IP 更改,不要改錯了
4 T, }* a- s) p; \mysql> flush privileges;
% A" @8 a6 S; |: n' ~) w2 X" `1 c/ x/ ^5 f3 P  ?& o
再輸入 SELECT 'User', 'Host', Length('Password') FROM mysql.user; 檢查密碼度,就可發現剛剛改的root 的密碼長度已改為41碼" y: F; Y; e* o3 A+ G
注意:
. B2 f3 I- s/ U3 Q如果帳號太多,可以遇到問題時再重設密碼,因為重設密碼 SET PASSWORD FOR 只針對個別密碼,不會因為 old_passwords=0 而對所有密碼造成影響
===========================================================================
: l# K4 I' q% C% z當mysql升級到 8.0.21時,php連到mysql出現2行errors:2 C! G# L% R, v9 X' T5 a0 X
mysqli_real_connect(): Server sent charset (255) unknown to the client. Please, report to the developers
" P8 c% F* N  X1 Z+ K- X& Imysqli_real_connect(): (HY000/2054): Server sent charset unknown to the client. Please, report to the developers, b# _! Y% ]5 _8 J4 W1 H
原因:

3 Y8 o; T4 Q- P* \7 r& ?$ @6 v在MySQL 8.0.21中,caching_sha2_password是默認的身份驗證插件,而不是以往的mysql_native_password。所以和php不相容。可以降級php,也可以修改MySQL的配置。 吾人決定修改MySQL的配置:
5 v" q) [9 R9 K- j0 [6 c& Qvi /etc/my.cnf  加入下列:
0 P7 t+ }7 E# g0 U[mysqld]. f+ k4 A- H) j6 b3 W" o4 T  g

4 D6 W" m5 [9 ]character-set-server=utf86 i/ @) }$ i: B& s, p1 V" ?
default_authentication_plugin=mysql_native_password
* {0 H* _, W& ^) |( v) @9 z# O4 C0 D( L) ^
[mysql]& F* f! u% c# ?, w
default-character-set=utf8
+ ^/ a. F! J4 U- J0 ]1 c3 D& H+ C' r
  q  K) _3 i: _! V[client]( S1 P3 R; u( a  R7 R2 ]
default-character-set=utf8: }, x. C. z8 T+ B- q6 L
. Y& n1 ^, V* i) L- G; O; E
然後重啟mysqld) ~* T4 C; Z6 _  O) _
service mysqld restart
, l( [" @: H0 y) v. @搞定!!
, x9 H3 ]. g4 R* {  b  Z: d# ?

/ U5 g" E1 {2 |8 h! F0 `1 B) ^
9 {3 o6 p9 r! d' b$ ^( {  c  G
回復

舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則



聚BT福利

本區塊內容依據『電腦網路內容分級處理辦法』為限制級網站,限定年滿18歲以上或達當地國家法定年齡人士方可進入,且願接受本站各項條款,未滿18歲 謝絕進入瀏覽。為防範未滿18歲之未成年網友瀏覽網路上限制級內容的圖文資訊,建議您可進行網路內容分級組織ICRA分級服務的安裝與設定。 (為還給愛護 本站的網友一個純淨的論壇環境,本站設有管理員)

QQ|小黑屋|手機板|52AV手機A片王

GMT+8, 2025-7-8 03:08 , Processed in 0.062040 second(s), 16 queries .

連絡站長.廣告招商

52avtv@gmail.com | QQ:2405733034     since 2015-01

裸聊妹 快速回復 返回頂部 返回列表