MySQL तक पासवर्ड रहित पहुंच सक्षम करें


15

मैं MySQL के लिए अपना पासवर्ड कैसे हटा सकता हूं? मुझे डेटाबेस से जुड़ने के लिए पासवर्ड नहीं चाहिए। मेरा सर्वर Ubuntu चला रहा है।


बस ब्याज की बात के रूप में, आप एक पासवर्ड क्यों नहीं चाहते हैं?
जॉन गार्डनियर्स

उदाहरण के लिए जब मैं "dpkg-reconfigure phpmyadmin" चलाता हूं तो मैं त्रुटियों में भाग जाता हूं। यह एरर १०४५ एरर के साथ रुका हुआ रूट @ लोकलहोस्ट "पासवर्ड: नो" एंडिंग के साथ रुकता है।
लैसक

जवाबों:


30

व्यक्तिगत रूप से, मुझे लगता है कि इसके बजाय पासवर्ड सेट करना और उसे /root/.my.cnf में सहेजना बेहतर है:

प्रथम:

mysqladmin -u root password 'asdfghjkl'

फिर रूट की .my.cnf फ़ाइल को संपादित करें:

[client]
password = asdfghjkl

सुनिश्चित करें chmod 0600 .my.cnf

अब आपके पास एक पासवर्ड है, लेकिन अब आपको इसके लिए संकेत नहीं दिया जाएगा। मेरा डिफ़ॉल्ट MySQL सर्वर इंस्टाल इस तरह से .my.cnf फ़ाइल में सहेजे गए प्रत्येक MySQL सर्वर के लिए एक पूरी तरह से यादृच्छिक अद्वितीय पासवर्ड है।


1
मैं आपको अपने पर्यावरण को स्वचालित रूप से प्रमाणित करने की अनुमति देता हूं ताकि आप पासवर्ड हटा सकें।
ज़ोराडैस

2
आपको .my.cnf में उस पासवर्ड के उद्धरण की आवश्यकता हो सकती है। यह मेरे बिना काम नहीं करता था।
user67641

1
@ user67641: संस्करण पर निर्भर हो सकता है और आपके पासवर्ड में क्या है ... मेरा अल्फ़ान्यूमेरिक्स (कोई विशेष वर्ण) के सभी लंबे यादृच्छिक तार हैं और उद्धरण की आवश्यकता नहीं है।
Freiheit

2
यदि आपको /root/.my.cnf बनाने की आवश्यकता है, तो यह स्पष्ट रूप से 0600 अनुमतियों को सेट करने के लायक है, यह सुनिश्चित करने के लिए कि कोई अन्य उपयोगकर्ता स्नूप नहीं कर सकता है। अधिकांश समय सामान्य उपयोगकर्ता / रूट में नहीं उतर सकते हैं, लेकिन अतिरिक्त व्यामोह लगभग हमेशा वारंट होता है।
डेल एंडरसन

मिसिंग mv ./+%Y%m%d। $ db.sql mysqldump और gzip के बीच $ OUTPUT`
सिद्धार्थ

11

हां, कम पासवर्ड एक अच्छी बात हो सकती है। लेकिन हर किसी के लिए सिर्फ डेटाबेस नहीं खोलें।

unix_socket के माध्यम से:

grant usage on *.* to 'root'@'localhost' identified via unix_socket;

यह आपको पासवर्डलेस mysql एसेस देता है जो स्थानीय रूप से लॉग इन रूट उपयोगकर्ता के लिए है। Btw। हाल के ubuntu / debian रिलीज़ में यह डिफ़ॉल्ट है।

some_user@box: mysql -u root  # denied
root@box: mysql               # good
some_user@box: sudo mysql     # good, if "some_user" has sudo rights.

व्याख्यात्मक स्लाइड: https://www.slideshare.net/ottokekalainen/less-passwords-more-security-unix-socket-authentication-and-other-mariadb-hardening-tips


2
SF में आपका स्वागत है! लवली पहला उत्तर: स्पष्ट, एक अच्छा सारांश, आगे की खोज के लिए एक कड़ी, और यह उत्तर के मौजूदा कोष में कुछ जोड़ता है। मुझे आपका पहला उत्थान होने की खुशी है, और मुझे आशा है कि आप इस तरह के और अधिक उत्तर लिखने के लिए आसपास रहेंगे।
मदहोश

स्लाइड्स ठीक हैं, लेकिन यह वास्तविक दस्तावेज है: mariadb.com/kb/en/library/authentication-plugin-unix-socket
JonnyJD

10

यदि आपके पास MySQL के लिए एक पासवर्ड सेट है, तो पुनर्प्राप्त MySQL रूट पासवर्ड के निर्देशों का पालन करें , और फिर अपना पासवर्ड शून्य करने के लिए सेट करें:

5.7.6 और बाद के लिए

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'

5.7.5 और पूर्व के लिए

update user set password=PASSWORD("") where User='root';

* प्रभावी होने के लिए इसके लिए डीबी रिस्टार्ट (लिंक पर निर्देश देखें) की जरूरत है।

sudo service mysql restart

इस मामले में, "फ्लश विशेषाधिकारों के लिए मत भूलना;"
मार्को रामोस

@meyosef - यदि आपकी समस्या हल हो गई है, तो कृपया उत्तर के रूप में एक उत्तर को चिह्नित करें (वोट की संख्या के तहत हरे चेकमार्क पर क्लिक करें)।
jneves

मैंने सोचा कि मैं यूनिक्स सॉकेट के लिए खाली पासवर्ड का उपयोग कर सकता हूं और लूपबैक नहीं, लेकिन यह संभव नहीं है। unix_socketप्लगइन एक अलग बात है।
बेसिन

5

आप भी कर सकते हैं:

grant all privileges on *.* to 'root'@'localhost' identified by '';

1

मुझे पूरा यकीन है कि डिफ़ॉल्ट रूप से कोई पासवर्ड नहीं है यदि आपका व्यवस्थापक उपयोगकर्ता है और इसे स्थानीय रूप से एक्सेस कर रहा है। क्या आप इससे अलग कुछ खोज रहे हैं?

क्या यह काम करता है?

#> mysqladmin -u root password ''

0

IDENTIFIED VIA unix_socketबयान केवल MariaDB के लिए है।

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket;

MySQL के लिए, उसी द्वारा हासिल किया गया है IDENTIFIED WITH auth_socket

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED WITH auth_socket;

केवल दो शब्दों का अंतर, लेकिन वे वास्तव में समान नहीं हैं।

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