पासवर्ड के बिना लिनक्स रूट यूजर mysql रूट एक्सेस की अनुमति दें


28

CPanel पर जब मैं रूट के रूप में लॉग इन करता हूं और होस्टनाम और पासवर्ड के बिना "mysql" टाइप करता हूं तो यह मुझे mysql रूट उपयोगकर्ता तक सीधी पहुंच प्रदान करता है।

मैं अपने गैर-गैर-सर्वर सर्वर में से एक के लिए ऐसा करना चाहूंगा जहां linux रूट उपयोगकर्ता को उसी तरह से mysql रूट उपयोगकर्ता को पासवर्ड कम लॉगऑन मिलता है जैसे कि वह cPanel पर करता है।

क्या यह संभव है ?

जवाबों:


53

ऐसा करने का सबसे आसान तरीका ~ / .my.cnf फ़ाइल के ग्राहक अनुभाग का उपयोग करना है, और वहां क्रेडेंशियल्स जोड़ना है।

[client]
user=root
password=somepassword
...

उस फाइल को केवल रूट द्वारा भी पठनीय बनाना एक अच्छा विचार है।


1
हां यह काम करता है और यह है कि cPanel यह कैसे कर रहा है
user1066991

9
मुझे एक संभावित सुरक्षा समस्या की ओर इंगित करने की आवश्यकता है .. आपको थोड़ा सावधान रहने की आवश्यकता है कि आप इसे संपादित न करें /etc/my.cnfजिसमें mysql सर्वर बूट करने के लिए उपयोग करता है। यदि आप mysql रूट उपयोगकर्ता को /etc/my.cnfकिसी में भी रखते हैं, तो बिना पासवर्ड के सभी विशेषाधिकार के साथ mysql सर्वर का उपयोग कर सकते हैं। Iain .my.cnfरूट के घर में शेल उपयोगकर्ता की ओर इशारा करता है जो निश्चित रूप से सही है।
कोएन वैन डेर रिज्ट

अगर कोई ~ / .my.cnf फाइल न हो तो क्या होगा? यदि मैं इसे बनाता हूं और अपने आप को पुनः आरंभ करता हूं, तो क्या मैं ऐसा करने में सक्षम हूं?
Amalgovinus

21

Mysql 5.7+ के लिए, यदि आप प्रारंभिक सेटअप के लिए खाली पासवर्ड सेट करते हैं, तो mysql स्वचालित auth_socketरूप से एक रणनीति के रूप में उपयोग करेगा । रणनीति में बदलाव के बिना पासवर्ड अपडेट करने का प्रयास का कोई परिणाम नहीं होगा। यदि आपका उपयोगकर्ता है तो आप पासवर्ड का उपयोग किए बिना हमेशा लॉगिन कर सकते हैं root

समाधान प्रमाणीकरण नीति को बदलने और पासवर्ड सेट करने के लिए निम्नलिखित कमांड चलाएँ

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''

संदर्भ: https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/


3
मुझे इसे काम करने के लिए अंत में एक खाली स्ट्रिंग जोड़ना था:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
kramer65

Interking @kramer, केवल तभी काम करता है जब मैं इसे आपके रूप में सेट करता हूं ... BY "";। धन्यवाद!
जुआन एंटोनियो

यह पासवेयर को 'Any_PASSWORD' में बदल रहा है और पासवर्ड क्लियर नहीं कर रहा है। पासवर्ड के बिना साफ़ और लॉगिन करने के लिए, इसे एक खाली स्ट्रिंग पर सेट करें।
फर्नांडो कोष

7

MySQL 5.6.6 के रूप में, आप एक एन्क्रिप्टेड फ़ाइल बनाने के लिए mysql_config_editor का उपयोग कर सकते हैं जो आपको स्वचालित रूप से लॉग इन करेगा:

mysql_config_editor set --login-path=client --host=localhost --user=root --password

संकेत मिलने पर पासवर्ड डालें।

नोट: यदि आपके पासवर्ड में '#' है, और संभवतः अन्य वर्ण हैं, तो पासवर्ड दर्ज करते समय एकल उद्धरण का उपयोग करें।


क्या आप एकल-उद्धरण टिप्पणी पर विस्तार से बता सकते हैं? यह आपको टर्मिनल पर पासवर्ड के लिए संकेत दे रहा है, क्या आप पासवर्ड को सिंगल कोट्स में लपेट रहे हैं
user2299958

हां, मैंने पाया कि यदि विशेष वर्ण होते तो बिना उद्धरण के इसमें प्रवेश करना काम नहीं करता। इसलिए जब संकेत दिया जाए, तो केवल '(एकल उद्धरण), फिर पासवर्ड, फिर दर्ज करें'।
ब्रायन डिटर्जिंग

0

एक फाइल बनाएं जिसमें केवल mysql रूट पासवर्ड हो और केवल रूट ही पढ़ सके।

# ls -l /root/.mysqlpw 
-rw------- 1 root root 7 2013-08-19 13:24 /root/.mysqlpw

आप के साथ एक डेटाबेस आयात कर सकते हैं

# mysql -u root -p`cat /root/.mysqlpw ` yourdatabase < databasedump.sql

या आपको डेटाबेस से कनेक्ट करें और mysql कमांड जारी करें

# mysql -u root -p`cat /root/.mysqlpw ` yourdatabase
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 20460
Server version: 5.1.63-0ubuntu0.10.04.1 (Ubuntu)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| yourdatabase       |
+--------------------+
3 rows in set (0.00 sec)

mysql> show tables;
...

5
यह अन्य उत्तर की तुलना में बहुत अधिक काम है। और आपका पासवर्ड बहुत छोटा है। :)
माइकल हैम्पटन

8
यह मत करो। यह कमांड लाइन पर पासवर्ड डालता है जिसे कोई भी ps(1)
कैमहै

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