Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

त्रुटि 1698 (28000):उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' के लिए प्रवेश निषेध

उबंटू, माईएसक्यूएल जैसे कुछ सिस्टम UNIX auth_socket प्लगइन डिफ़ॉल्ट रूप से।

मूल रूप से इसका अर्थ यह है कि:db_users जो इसका उपयोग कर रहे हैं, उन्हें सिस्टम उपयोगकर्ता क्रेडेंशियल द्वारा "प्रमाणीकृत" किया जाएगा। आप देख सकते हैं कि आपका root उपयोगकर्ता को निम्न कार्य करके इस तरह सेट किया जाता है:

sudo mysql -u root # I had to use "sudo" since it was a new installation

mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;

+------------------+-----------------------+
| User             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+

जैसा कि आप क्वेरी में देख सकते हैं, root उपयोगकर्ता auth_socket का उपयोग कर रहा है प्लगइन।

इसे हल करने के दो तरीके हैं:

  1. आप रूट . सेट कर सकते हैं उपयोगकर्ता mysql_native_password . का उपयोग करने के लिए प्लगइन
  2. आप एक नया db_user बना सकते हैं आपके साथ system_user (अनुशंसित)

विकल्प 1:

sudo mysql -u root # I had to use "sudo" since it was new installation

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

sudo service mysql restart

विकल्प 2: (Your_SYSTEM_USER को अपने पास मौजूद उपयोगकर्ता नाम से बदलें)

sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWD';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
mysql> FLUSH PRIVILEGES;
mysql> exit;

sudo service mysql restart

याद रखें कि यदि आप विकल्प #2 का उपयोग करते हैं तो आपको अपने सिस्टम उपयोगकर्ता नाम के रूप में MySQL से कनेक्ट करना होगा (mysql -u YOUR_SYSTEM_USER )।

नोट: कुछ सिस्टम पर (जैसे, डेबियन 9 (स्ट्रेच)) 'auth_socket' प्लगइन को 'unix_socket' कहा जाता है। , इसलिए संबंधित SQL कमांड होनी चाहिए:UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';

@ एंडी की टिप्पणी से ऐसा लगता है कि MySQL 8.x.x ने auth_socket को अपडेट/प्रतिस्थापित किया है। caching_sha2_password . के लिए . मेरे पास इसका परीक्षण करने के लिए MySQL 8.x.x के साथ सिस्टम सेटअप नहीं है। हालाँकि, ऊपर दिए गए चरणों से आपको समस्या को समझने में मदद मिलेगी। ये रहा जवाब:

MySQL 8.0.4 के रूप में एक परिवर्तन यह है कि नया डिफ़ॉल्ट प्रमाणीकरण प्लगइन 'caching_sha2_password' है। नए 'Your_SYSTEM_USER' में यह प्रमाणीकरण प्लगइन होगा और आप "mysql -u Your_SYSTEM_USER -p" के साथ अब बैश शेल से लॉग इन कर सकते हैं और प्रॉम्प्ट पर इस उपयोगकर्ता के लिए पासवर्ड प्रदान कर सकते हैं। "अपडेट उपयोगकर्ता सेट प्लगइन" चरण की कोई आवश्यकता नहीं है।

8.0.4 डिफ़ॉल्ट प्रमाणीकरण प्लग इन अपडेट के लिए, देखें https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कमांड लाइन से mysql रिमोट डेटाबेस एक्सेस करें

  2. Mysql में INNODB कैसे सक्षम करें

  3. MySQL में ग्रुप बाय क्लॉज का उपयोग करके समूह पंक्तियाँ

  4. एक SQL क्वेरी में दो तालिकाओं को मर्ज करें और दिनांक मानों को अद्वितीय बनाएं

  5. MySQL डेटाबेस में लिंक की गई सूची लाई जा रही है