php mysqli_connect: प्रमाणीकरण विधि ग्राहक के लिए अज्ञात है




hash sha (5)

मैं एक MySQL डेटाबेस में प्रवेश के लिए php mysqli_connect का उपयोग कर रहा हूं (सभी स्थानीयहोस्ट पर)

<?php
//DEFINE ('DB_USER', 'user2');
//DEFINE ('DB_PASSWORD', 'pass2');
DEFINE ('DB_USER', 'user1');
DEFINE ('DB_PASSWORD', 'pass1');
DEFINE ('DB_HOST', '127.0.0.1');
DEFINE ('DB_NAME', 'dbname');

$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

if(!$dbc){
    die('error connecting to database');    
}
?>

यह mysql.user तालिका है:

MySQL सर्वर आईएनआई फ़ाइल:

[mysqld]
# The default authentication plugin to be used when connecting to the server
default_authentication_plugin=caching_sha2_password
#default_authentication_plugin=mysql_native_password

MySQL Server ini फ़ाइल में caching_sha2_password साथ, user1 या user2 के साथ लॉगिन करना बिल्कुल भी संभव नहीं है;

त्रुटि: mysqli_connect (): सर्वर ने क्लाइंट को अज्ञात [caching_sha2_pass] में अज्ञात तरीके का अनुरोध किया

MySQL Server ini फ़ाइल में mysql_native_password साथ, यह user1 के साथ लॉगिन करना संभव है, लेकिन user2 के साथ, वही त्रुटि;

मैं caching_sha2_password सर्वर पर caching_sha2_password का उपयोग करके कैसे लॉगिन कर सकता हूं?


यदि आप Windows पर हैं और caching_sha2_password का उपयोग करना संभव नहीं है, तो आप निम्न कार्य कर सकते हैं:

  1. MySQL इंस्टालर को फिर से चलाएँ
  2. MySQL सर्वर (शीर्ष आइटम) के आगे "पुन: कॉन्फ़िगर करें" चुनें
  3. "प्रमाणीकरण" प्राप्त करने तक "अगला" पर क्लिक करें
  4. "ऑथेंटिकेशन ऑथेंटिकेशन के लिए स्ट्रॉन्ग पासवर्ड एनक्रिप्शन का उपयोग करें" (लिगेसी ऑथेंटिकेशन मेथड का प्रयोग करें)
  5. अगला पर क्लिक करें"
  6. खातों और रोल्स में अपना रूट खाता पासवर्ड दर्ज करें, और "चेक" पर क्लिक करें
  7. अगला पर क्लिक करें"
  8. जब तक आप "कॉन्फ़िगरेशन लागू न करें" पर "अगला" पर क्लिक करते रहें
  9. "निष्पादित करें" पर क्लिक करें

इंस्टॉलर आपके लिए आवश्यक सभी कॉन्फ़िगरेशन परिवर्तन कर देगा।


मैंने ALTER USER 'root' @ 'localhost' identified with mysql_native_password BY 'root123'; गए निम्न कमांड ALTER USER 'root' @ 'localhost' identified with mysql_native_password BY 'root123'; कमांड लाइन में और अंत में स्थानीय सेवाओं में MySQL पुनः आरंभ करें।


यह मेरे लिए काम कर रहा है (PHP 5.6 + PDO / MySQL सर्वर 8.0 / विंडोज 7 64 बिट्स)

फ़ाइल को संपादित करें C:\ProgramData\MySQL\MySQL Server 8.0\my.ini :

default_authentication_plugin=mysql_native_password

Windows पर MySQL सेवा रीसेट करें, और MySQL शेल में ...

ALTER USER [email protected]'%' IDENTIFIED WITH mysql_native_password BY 'password';

ALTER USER 'mysqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlUsernamePassword';

ALTER USER बाद उद्धरण (') निकालें और mysql_native_password BY बाद उद्धरण (') mysql_native_password BY

यह मेरे लिए भी काम कर रहा है।


वर्तमान में, php mysqli एक्सटेंशन नई caching_sha2 प्रमाणीकरण सुविधा का समर्थन नहीं करता है। आपको अपडेट जारी करने तक इंतजार करना होगा।

Mysql डेवलपर्स से संबंधित पोस्ट की जाँच करें: https://mysqlserverteam.com/upgrading-to-mysql-8-0-default-authentication-plugin-considerations/

उन्होंने पीडीओ का उल्लेख नहीं किया, शायद आपको पीडीओ से जुड़ने की कोशिश करनी चाहिए।





sha