MySQL विफल रहता है: mysql "ERROR 1524 (HY000): प्लगिन 'Andor_socket' नहीं है"


126

मेरा स्थानीय वातावरण है:

  • ताजा उबंटू 16.04
  • PHP 7 के साथ
  • स्थापित MySQL 5.7 के साथ

    sudo apt-get install mysql-common mysql-server

जब मैंने MySQL (CLI के माध्यम से) लॉगिन करने की कोशिश की:

mysql -u root -p

मैं 3 चरणों के साथ चक्रीय मुद्दे पर आया था।

1) पहले कुछ सॉकेट मुद्दा था

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

हल: पीसी को पुनरारंभ करना।

जिसके कारण एक और त्रुटि हुई:

2) पहुंच से वंचित

ERROR 1698 (28000): Access denied for user 'root'@'localhost'.

संभव मुद्दा? "रूट" उपयोगकर्ता के लिए गलत पासवर्ड!

समाधान: इस ट्यूटोरियल के साथ रूट पासवर्ड रीसेट करें

सही पासवर्ड और काम करने वाले सॉकेट के साथ, अंतिम त्रुटि आती है।

3) गलत स्थिति प्लगइन

mysql "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded"

यहाँ मैं रुक गया या किसी तरह 1) फिर से मिला।


1
खुशी है कि यह आपके लिए अच्छा काम करता है :) बाहर तक पहुंचने के लिए धन्यवाद!
टोमैटो वोटरुबा

जवाबों:


371

मुझे एक उपाय सूझा!

जब चरण 2 पर रूट पासवर्ड रीसेट कर रहे हों), तो इसके लिए भी दूसरा प्लगइन बदलें mysql_native_password:

use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root';  # THIS LINE

flush privileges;
quit;

इसने मुझे सफलतापूर्वक लॉग इन करने की अनुमति दी!


पूर्ण कोड समाधान

1. बैश कमांड चलाएं

1. सबसे पहले, इन bash कमांड को रन करें

sudo /etc/init.d/mysql stop # stop mysql service
sudo mysqld_safe --skip-grant-tables & # start mysql without password
# enter -> go
mysql -uroot # connect to mysql

2. उसके बाद mysql कमांड => कॉपी पेस्ट को मैन्युअल रूप से cli पर चलाएँ

use mysql; # use mysql table
update user set authentication_string=PASSWORD("") where User='root'; # update password to nothing
update user set plugin="mysql_native_password" where User='root'; # set password resolving to default mechanism for root user

flush privileges;
quit;

3. अधिक बैश कमांड चलाएं

sudo /etc/init.d/mysql stop 
sudo /etc/init.d/mysql start # reset mysql
# try login to database, just press enter at password prompt because your password is now blank
mysql -u root -p 

4. सॉकेट मुद्दा (आपकी टिप्पणियों से)

जब आप सॉकेट त्रुटि देखते हैं , तो एक समुदाय 2 संभावित समाधानों के साथ आता है:

sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &

(@Cerin को धन्यवाद)

या

mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld  

(@Peter Dvukhrechensky को धन्यवाद)


अंधा रास्तों और संभव बढ़त त्रुटियों

लोकलहोस्ट के बजाय 127.0.0.1 का उपयोग करें

mysql -uroot # "-hlocalhost" is default

"गुम फ़ाइल" या एसएलटी त्रुटि हो सकती है।

mysql -uroot -h127.0.0.1

बेहतर काम करता है।

सॉकेट समस्या को छोड़ दें

मुझे mysqld.sockफ़ाइल बनाने , एक्सेस अधिकार बदलने या इसे सिम्लिंक करने के कई तरीके मिले हैं । यह सब के बाद का मुद्दा नहीं था।

my.cnfफ़ाइल को छोड़ें

मुद्दा भी नहीं था। यदि आप निश्चित नहीं हैं, तो यह आपकी मदद कर सकता है


3
इसके लिए शुक्रिया। यह भी एक उत्कृष्ट जवाब है कि कैसे mysql रूट पास को रीसेट किया जाए ताकि आप सॉकेट मुद्दे में पहले से ही चलने में मदद करने के लिए शीर्षक को थोड़ा संपादित कर सकें।
Wtower

1
मुझे खुशी है कि इसने मदद की। आप मूल संदेश रखने के लिए शीर्षक को कैसे संपादित करेंगे? मैं समझता हूं कि समाधान को पासवर्ड रीसेट करने की आवश्यकता है, लेकिन यह शीर्षक में समस्या को हल नहीं करता है। यह अधिक बिंदुओं की अधिक जटिल विफलता है। रूट पासवर्ड रीसेट के लिए, मैं यहां जाऊंगा: stackoverflow.com/a/6401963/1348344
टॉम वोटरुबा

1
@matanster वास्तव में नहीं, यह शुद्ध चरण-दर-चरण परीक्षण-असफल निर्माण है। आप किस ओएस का उपयोग करते हैं?
तोमा वोत्रुबा

8
आपका mysqld_safe कॉल गलत है। इसके बजाय आपको दौड़ने की जरूरत है:sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld; sudo mysqld_safe --skip-grant-tables &
सेरिन

3
कृपया उत्तर के लिए सॉकेट समस्या का एक सकारात्मक समाधान जोड़ें। इस तरह से mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqldयह किसी के समय को बचा सकता है
पीटर Dvukhrechensky

41

आप निम्नानुसार कोशिश कर सकते हैं यह मेरे लिए काम करता है।

प्रारंभ सर्वर:

sudo service mysql start

अब, फ़ोल्डर को जुर्राब करें:

cd /var/run

वापस ऊपर जुर्राब:

sudo cp -rp ./mysqld ./mysqld.bak

सर्वर बंद करें:

sudo service mysql stop

जुर्राब पुनर्स्थापित करें:

sudo mv ./mysqld.bak ./mysqld

Mysqld_safe प्रारंभ करें:

 sudo mysqld_safe --skip-grant-tables --skip-networking &

Init mysql खोल:

 mysql -u root

पासवर्ड बदलें:

इसलिए, पहले डेटाबेस चुनें

mysql> use mysql;

अब नीचे दो प्रश्न दर्ज करें:

mysql> update user set authentication_string=password('123456') where user='root';
mysql> update user set plugin="mysql_native_password" where User='root'; 

अब, सब कुछ ठीक हो जाएगा।

mysql> flush privileges;
mysql> quit;

जाँचने के लिए:

mysql -u root -p

किया हुआ!

N.B, After login please change the password again from phpmyadmin

अब जांच करें hostname/phpmyadmin

Username: root

Password: 123456

अधिक जानकारी के लिए कृपया देखें कि उबंटू में भूल गए पासवर्ड phpmyadmin को कैसे रीसेट करें


2
केवल यह मेरे लिए काम करता है! बैकअप और रिस्टोर सॉकेट बहुत स्मार्ट है
तौहीद udoy

1
ERROR 1045 (28000): "किए गए!" से पहले उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग कर: YES) के लिए प्रवेश से इनकार कर दिया गया! अपने जवाब में लाइन जब साथ 123456 लॉगिन करने की कोशिश कर
trainoasis

मैंने phpmyadmin (अर्थात पासवर्ड बदलें, प्लग इन बदलें) में वर्णित चरणों को करते हुए हल किया। किसी कारण से 'सेट प्रमाणीकरण_स्ट्रिंग = पासवर्ड (...)' ने इसे काम करना बंद कर दिया (त्रुटि 1045 (28000): प्रवेश निषेध ...)।
Fil

12

mysqlडिफ़ॉल्ट रूप से आदेश यूनिक्स सॉकेट का उपयोग करता है MySQL से कनेक्ट करने के।

यदि आप MariaDB का उपयोग कर रहे हैं, तो आपको सर्वर साइड पर यूनिक्स सॉकेट ऑथेंटिकेशन प्लगिन को लोड करना होगा ।

आप इसे [mysqld]कॉन्फ़िगरेशन को इस तरह संपादित करके कर सकते हैं :

[mysqld]
plugin-load-add = auth_socket.so

वितरण के आधार पर, कॉन्फिग फाइल आमतौर पर /etc/mysql/या पर स्थित होती है/usr/local/etc/mysql/


1
यह वाला। अन्य सभी उत्तर बताते हैं कि त्रुटि के आसपास कैसे काम करना है। यह एक समझाता है कि इसे कैसे सुरक्षित किया जाए।
एन्वाइट

यदि आप MariaDB 10.4.3 पर हैं और बाद में, unix_socket ऑर्टिकल प्लगइन को डिफ़ॉल्ट रूप से इंस्टॉल किया जाना चाहिए, लेकिन यदि आप इसे गलत तरीके से प्लगइन = "schem_socket" के रूप में संदर्भित करते हैं, तो प्लगइन = "unix_socket" के बजाय अपने "उपयोगकर्ता" को अपडेट करते हुए, आप यह कुछ भ्रामक संदेश प्राप्त होगा। मेरा जवाब इस बात पर विस्तृत है कि मैंने इसे कैसे गड़बड़ कर दिया।
रोहन एडम्स

9

आप इन कुछ चरणों को आजमा सकते हैं:

बंद करो Mysql सेवा 1 sudo /etc/init.d/mysql stop

पासवर्ड के बिना रूट के रूप में लॉगिन करें sudo mysqld_safe --skip-grant-tables &

लॉगइन mysql टर्मिनल के बाद आपको कमांड्स को निष्पादित करने की आवश्यकता है:

use mysql;

UPDATE mysql.user SET authentication_string=PASSWORD('solutionclub3@*^G'), plugin='mysql_native_password' WHERE User='root';

flush privileges;

sudo mysqladmin -u root -p -S /var/run/mysqld/mysqld.sock shutdown

अपने mysql सर्वर को पुनरारंभ करने के बाद यदि आपको अभी भी त्रुटि का सामना करना पड़ रहा है, तो आपको MySQL 5.7 रूट पासवर्ड Ubuntu 16.04 पर आना चाहिए


8

Ubuntu 18.04 और mysql 5.7 के लिए

  • चरण 1: sudo mkdir /var/run/mysqld;

    चरण 2: sudo chown mysql /var/run/mysqld

    चरण 3: sudo mysqld_safe --skip-grant-tablesऔर छोड़ दिया (उपयोग करें यदि इसके अटक गया है तो छोड़ दें)

पासवर्ड के बिना mysql में लॉगिन करें

  • चरण 4: sudo mysql --user=root mysql

    चरण 5: SELECT user,authentication_string,plugin,host FROM mysql.user;

    चरण 6: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'

अब साथ लॉगिन करें

  • mysql -u root -p <root>

1
लेकिन मैं किस कदम पर रूट के लिए पास सेट कर सकता हूं? क्योंकि मैंने कोशिश की थी $ mysql -u root -pलेकिन अभी तक पहुँच से इनकार कर दिया। Access denied for user 'root'@'localhost' (using password: YES)मैंने 'YES' पासवर्ड इनपुट करने की कोशिश की
AlexNikonov

4

इसे आज़माएँ: sudo mysql_secure_installation

उबंटू में काम 18.04


1

यदि मैंने वही गलती की है तो किसी ने यहाँ जमीन दी है:

  1. plugin="mysql_native_password"अस्थायी रूप से स्विच किया गया। मेरे कार्यों का प्रदर्शन किया।
  2. वापस "ओडिट_सोकेट" प्लगइन पर जाने का प्रयास किया गया, लेकिन इसे गलत तरीके से संदर्भित किया गया plugin="auth_socket"जिसके परिणामस्वरूपmysql "ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded"
  3. इस गलती को ठीक करने के लिए लॉगिन करने का एक तरीका खोना, मुझे mysql_safeउचित प्लगइन पर स्विच करने के लिए mysql को बंद करने और प्रमाणीकरण को बायपास करने के लिए उपयोग करने के लिए मजबूर होना पड़ा।plugin="unix_socket"

उम्मीद है कि यह किसी को कुछ समय बचाता है यदि उन्हें मूल पोस्टर का त्रुटि संदेश प्राप्त होता है, लेकिन सही कारण प्लगइन नाम को फ़्लब कर रहा है, वास्तव में "ऑर्टिक_सोकेट" प्लगइन के अस्तित्व की कमी नहीं है, जो मारियाडीबी प्रलेखन के अनुसार है :

MariaDB 10.4.3 और बाद में, unix_socket ऑथेंटिकेशन प्लगइन डिफ़ॉल्ट रूप से इंस्टॉल हो जाता है, और इसका उपयोग डिफ़ॉल्ट रूप से 'root' @ 'localhost' उपयोगकर्ता खाते द्वारा किया जाता है।


-7

आप नीचे दिए गए आदेशों के साथ कोशिश कर सकते हैं:

hduser@master:~$ sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.
hduser@master:~$ sudo /etc/init.d/mysql start
[ ok ] Starting mysql (via systemctl): mysql.service.

क्या आप आगे बता सकते हैं? सर्वर को पुनरारंभ करने से दिए गए त्रुटि संदेश को कैसे हल किया जाता है?
निको हसे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.