उबंटू पर नए इंस्टॉलेशन के बाद उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग करना: YES) के लिए उपयोग से इनकार कर दिया गया


124

आज मैंने Ubuntu 14.04.1 LTS ll में रूट के रूप में एक लॉगिन किया

और फिर apt-get install mariadb-server(बिना सूद के लेकिन जड़ के रूप में)।

के साथ mySQL -h localhost -u root --password=<PW>मैं मिल गया

उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग करके: YES) के लिए प्रवेश से वंचित

के साथ mySQL -u root -pमैं DB में लॉग इन किया और किया

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<PW>';
FLUSH ALL PRIVILEGES;

लेकिन इससे कोई फायदा नहीं हुआ। क्या आपको कोई विचार आया है? मुझे ऐसे ही सवालों का जवाब नहीं मिला।


क्या आपने रूट के लिए पासवर्ड रीसेट करने की कोशिश की है?
ओजगुर बार

जवाबों:


277

टी एल; डॉ: जड़ उपयोगकर्ता के रूप में के बाद mysql / MariaDB की पहुँच नए संस्करणों के लिए, एक नया स्थापित करने के बाद, आप एक रूट खोल में होने की जरूरत है (यानी sudo mysql -u root, या mysql -u rootएक खोल द्वारा शुरू अंदर su -या sudo -iपहले)


उबंटू पर सिर्फ एक ही अपग्रेड करने के बाद, मेरे पास एक ही मुद्दा था।

क्या अजीब बात थी

sudo /usr/bin/mysql_secure_installation

मेरे पासवर्ड को स्वीकार करेंगे, और मुझे इसे सेट करने की अनुमति देंगे, लेकिन मैं क्लाइंट के rootमाध्यम से लॉग इन नहीं कर सकताmysql

मुझे मारीदब से शुरुआत करनी थी

sudo mysqld_safe --skip-grant-tables

रूट के रूप में उपयोग करने के लिए, जबकि अन्य सभी उपयोगकर्ता अभी भी ठीक पहुंच सकते हैं।

mysql.userतालिका को देखते हुए मैंने रूट के लिए pluginकॉलम को सेट किया है, unix_socketजबकि अन्य सभी उपयोगकर्ता इसे 'mysql_native_bword' पर सेट कर रहे हैं। इस पृष्ठ पर एक त्वरित नज़र: https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/ बताते हैं कि यूनिक्स सॉकेट उपयोगकर्ता द्वारा uidक्लाइंट को चलाने वाली प्रक्रिया के मिलान से लॉगिंग को सक्षम बनाता है। mysql.userतालिका। दूसरे शब्दों में के रूप में mariadb का उपयोग करने के लिएroot आपको रूट के रूप में लॉग इन करना होगा।

सुनिश्चित करें कि प्रमाणीकरण के साथ मेरे मरदब डेमॉन को पुनः आरंभ करना आवश्यक है, मैं इसके साथ रूट के रूप में लॉगिन कर सकता हूं

sudo mysql -u root -p

या

sudo su -
mysql -u root -p

ऐसा करने के बाद मैंने सोचा कि बिना सुडो के कैसे पहुंचा जा सकता है, जो कि इन mysql प्रश्नों को चलाने की बात है

GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;

( <password>अपने वांछित mysql रूट पासवर्ड के साथ प्रतिस्थापित )। यह सक्षम पासवर्ड रूट उपयोगकर्ता के लिए लॉगिन करता है।

वैकल्पिक रूप से mysql क्वेरी चल रही है:

UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;

पासवर्ड बदले बिना पासवर्ड लॉगिन का उपयोग करने के लिए रूट खाते को बदल देगा, लेकिन यह आपको mysql / mariadb इंस्टॉल कर सकता है और उस पर कोई रूट पासवर्ड नहीं है।

इन दोनों में से किसी के बाद भी आपको mysql / mariadb को पुनः आरंभ करने की आवश्यकता है:

sudo service mysql restart

और वोइला मैं अपने निजी खाते के माध्यम से पहुँच था mysql -u root -p

कृपया ध्यान दें कि ऐसा करने से सुरक्षा कम हो रही है, संभवतः MariaDB डेवलपर्स ने एक अच्छे कारण के लिए इस तरह से रूट का उपयोग करने का विकल्प चुना है।

इसके बारे में सोचकर मुझे बहुत खुशी हुई, sudo mysql -u root -pइसलिए मैं वापस उसी जगह जा रहा हूं, लेकिन मुझे लगा कि मैं अपना समाधान पोस्ट कर दूंगा क्योंकि मुझे कहीं और नहीं मिला।


7
"मारीडब को रूट के रूप में एक्सेस करने के लिए आपको रूट के रूप में लॉग इन करना होगा।" - यह वाक्य उत्तर के शीर्ष पर होना चाहिए।
फिलिप लुडविग

1
आप GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>'; निजीकरण से पहले दो बार कमांड क्यों चलाते हैं ?
ब्लेयरग 23

4
यह कहीं अधिक दृश्यमान होना चाहिए, जैसे कि वृद्धिशीलता के दौरान बड़े लाल अक्षर या कुछ और ... जीवन के कुछ घंटों को बर्बाद करने के लिए सेटअप सर्वर के लिए कोशिश कर रहा हूं जो मुझे ASAP की आवश्यकता है ....
Gall Annonim

1
btw, अगर तुम मेरी तरह आलसी हो, तो तुम दो सेकंड की तरह बचा सकते होsudo service mysql restart
zeisi

1
टिप के लिए धन्यवाद, देव के लिए बहुत अच्छा है लेकिन आप इसे वापस मूल कैसे करते हैं?
सैम

42

साफ उबंटू 16.04 एलटीएस में, लोकलहोस्ट के लिए मारियाबेड रूट लॉगिन पासवर्ड शैली से सूडो लॉगिन शैली में बदल गया ...

तो, बस करो

sudo mysql -u root

जब से हम पासवर्ड के साथ लॉगिन करना चाहते हैं, एक और उपयोगकर्ता 'उपयोगकर्ता' बनाएं

मारियाबीडी कंसोल में ... (आपको मारडोबीडी कंसोल में 'sudo mysql -u root' मिलता है)

use mysql
CREATE USER 'user'@'localhost' IDENTIFIED BY 'yourpassword';
\q

फिर बैश शेल प्रॉम्प्ट में,

mysql-workbench

और आप लोकलहोस्ट पर 'यूजरपास' के साथ 'यूजर' से लॉगइन कर सकते हैं


12

आदेश का प्रयास करें

sudo mysql_secure_installation

mysql / mariadb में रूट के लिए एक नया पासवर्ड दर्ज करें और दबाएँ ।

यदि आपको कोई त्रुटि मिलती है

ERROR 2002 (HY000): सॉकेट '/var/run/mysqld/mysqld.sock' के माध्यम से स्थानीय MySQL सर्वर से कनेक्ट नहीं हो सकता

सेवा को सक्षम करें

service mysql start

अब यदि आप पुनः प्रवेश करते हैं

mysql -u root -p

यदि आप समस्या के साथ प्रवेश करते हैं sudo suऔर mysql -u root -pअब रूट पर अनुमति लागू करते हैं

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<password>';

इसने MariaDB में मेरी समस्या ठीक कर दी ।

सौभाग्य



3

मारियाडब को रूट के रूप में एक्सेस करने के लिए मुझे उबंटू में रूट के रूप में लॉग इन करना पड़ा। इसका उस "हार्डन ..." के साथ कुछ लेना-देना हो सकता है, जब यह आपको पहली बार स्थापित करने के लिए प्रेरित करता है। इसलिए:

$ sudo su
[sudo] password for user: yourubunturootpassword
# mysql -r root -p
Enter password: yourmariadbrootpassword

और तुम अंदर हो


2

विशेषाधिकारों को फ्लश करने का नया आदेश है:

FLUSH PRIVILEGES

पुराना कमांड FLUSH ALL PRIVILEGESकोई काम नहीं करता है।

आपको एक त्रुटि मिलेगी जो इस तरह दिखती है:

MariaDB [(none)]> FLUSH ALL PRIVILEGES; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ALL PRIVILEGES' at line 1

उम्मीद है की यह मदद करेगा :)


0

Mysql_upgrade चलाएं।

जांच करे

SHOW GRANTS FOR 'root'@'localhost';

कहते हैं

GRANT ALL PRIVILEGES ON ... WITH GRANT OPTION 

जाँच करें कि तालिका मौजूद है _mysql.proxies_priv_।

विशेषाधिकार प्रदान करने का प्रयास करते समय उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' के लिए प्रवेश से वंचित। मैं विशेषाधिकार कैसे प्रदान करूं?


0

Ubuntu_socket प्लगइन का उपयोग करने के लिए उबंटू जैसी प्रणाली पसंद करती है । यह DB और प्रक्रिया में अपने उपयोगकर्ता नाम की तुलना करके प्रमाणित करने का प्रयास करेगा जो mysql अनुरोध करता है; यह यहाँ वर्णित है

सॉकेट प्लग इन की जाँच करता है कि सॉकेट उपयोगकर्ता नाम (ऑपरेटिंग सिस्टम उपयोगकर्ता नाम) क्लाइंट प्रोग्राम द्वारा निर्दिष्ट MySQL उपयोगकर्ता नाम से मेल खाता है या नहीं और कनेक्शन की अनुमति केवल तभी मिलती है जब नाम मेल खाते हैं।

इसके बजाय आप mysql_native_password के साथ वापस आ सकते हैं , जिसे प्रमाणित करने के लिए उपयोगकर्ता / पासवर्ड की आवश्यकता होगी।

उस विधि को प्राप्त करने के बारे में, मैं इसके बजाय यह सलाह देता हूं ।

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