रूट के रूप में phpmyadmin दर्ज नहीं किया जा सकता है (MySQL 5.7)


66

मैं Ubuntu डेस्कटॉप 16.04 (15.10 से उन्नत) का उपयोग कर रहा हूं।

मैं द्वारा phpmyadmin स्थापित किया था apt-get install phpmyadmin। यह काम करता है अगर मैं जाता हूं, localhost/phpmyadminलेकिन मैं इसे रूट के रूप में लॉग इन नहीं कर सकता।

मैंने इसके लिए बहुत खोज की है। मुझे कई स्रोत मिले हैं, जिसमें वे /etc/phpmyadmin/config.inc.phpउपयोगकर्ता और पासवर्ड को 'रूट' और '' (पासवर्ड के लिए खाली) के साथ बदलने और बदलने का सुझाव देते हैं। लेकिन मेरा config.inc.phpइनसे अलग है। उदाहरण के लिए मेरी फ़ाइल में, उपयोगकर्ता और पासवर्ड के लिए कोई पंक्ति नहीं है और ऐसा लगता है कि यह स्वचालित रूप से किसी अन्य फ़ाइल से प्राप्त होता है /etc/phpmyadmin/config-db.php। इसके बावजूद, मैंने उस फ़ाइल में उपयोगकर्ता और पासवर्ड को बदल दिया है, लेकिन अब मुझे यह त्रुटि मिलती है:

#1698 - Access denied for user 'root'@'localhost'

मुझे क्या करना चाहिए?


Phpmyadmin संस्करण: 4.5.4.1deb2ubuntu1
mysql Ver 14.14 Distrib 5.7.12, लिनक्स (x86_64) के लिए EditLine आवरण का उपयोग करना


कौन सा MySQL संस्करण?
राएल गुगेलमिन कुन्हा

प्रश्न अद्यतन किया गया है
मुस्तफा अघराहा

SIMPLE WAY खोज लॉगिन और पाथ- इन /etc/mysql/debian.cnf - Ubuntu 16.04
cl-r

जवाबों:


127

MySQL 5.7 ने सुरक्षित मॉडल को बदल दिया: अब MySQL rootलॉगिन के लिए a की आवश्यकता है sudo

यानी, phpMyAdmin क्रेडेंशियल्स का उपयोग करने में सक्षम नहीं होगा root

सबसे सरल, सबसे सुरक्षित और स्थायी समाधान एक नया उपयोगकर्ता बनाएगा और आवश्यक विशेषाधिकार प्रदान करेगा।

1. mysql से कनेक्ट करें

sudo mysql --user=root mysql

2. एक वास्तविक पासवर्ड बनाएं

नीचे दिए गए चरणों में मैं some_passएक नमूना पासवर्ड के रूप में उपयोग करूंगा । कृपया, अपने पासवर्ड द्वारा इसे पुन: लिखें! पास के SOME_PASSरूप में उपयोग न करें !

3. phpMyAdmin के लिए एक उपयोगकर्ता बनाएं

निम्न आदेश चलाएँ ( some_passइच्छित पासवर्ड द्वारा प्रतिस्थापित ):

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

यदि आपका phpMyAdmin लोकलहोस्ट से कनेक्ट हो रहा है, तो यह पर्याप्त होना चाहिए।

4. वैकल्पिक और असुरक्षित: दूरस्थ कनेक्शन की अनुमति दें

याद रखें : किसी दूरस्थ उपयोगकर्ता को सभी विशेषाधिकार रखने की अनुमति देना एक सुरक्षा चिंता है और अधिकांश मामलों में इसकी आवश्यकता नहीं है।

इसे ध्यान में रखते हुए, यदि आप चाहते हैं कि यह उपयोगकर्ता दूरस्थ कनेक्शन के दौरान समान विशेषाधिकार रखता है, तो अतिरिक्त रूप से चलाएं ( some_passचरण # 2 में प्रयुक्त पासवर्ड द्वारा प्रतिस्थापित ):

CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

5. phpMyAdmin को अपडेट करें

निम्नलिखित अनुभागों में फ़ाइल अद्यतन करने वाले उपयोगकर्ता / पासवर्ड मूल्यों का उपयोग करना sudo, संपादित करना /etc/dbconfig-common/phpmyadmin.conf( some_passचरण # 2 में प्रयुक्त पासवर्ड द्वारा प्रतिस्थापित ):

# dbc_dbuser: database user
#       the name of the user who we will use to connect to the database.
dbc_dbuser='phpmyadmin'

# dbc_dbpass: database user password
#       the password to use with the above username when connecting
#       to a database, if one is required
dbc_dbpass='some_pass'

2
मैं जांच करूंगा। इस बीच एक समाधान के रूप में, आप एक नया उपयोगकर्ता जोड़ सकते हैं और सभी अनुमतियाँ प्रदान कर सकते हैं और फिर इसे phpmyadmin config फाइल में जोड़ सकते हैं।
Rael Gugelmin Cunha

9
प्यार हो गया कि उन्नयन के बाद MySQL चीजों को तोड़ता रहता है। खुशी से मेरे कार्यक्षेत्र में रूट का उपयोग कर रहा था और अब ऐसा लगता है कि एकमात्र समाधान कमांड लाइन पर "sudo mysql" है, एक नया उपयोगकर्ता बनाएं, सभी समान विशेषाधिकार प्रदान करें और कार्यक्षेत्र में इसका उपयोग करें। बेवकूफ।
एंड्रिस

3
@MostafaAhangarha जांच के बाद, मैंने पाया कि रिक्त पासवर्ड की अनुमति है, लेकिन rootउपयोगकर्ता को हमेशा sudo5.7 पर उपयोग की आवश्यकता होती है । इसलिए, मैंने सभी विशेषाधिकारों के साथ एक नया उपयोगकर्ता बनाने के लिए गाइड का उत्तर अपडेट किया है।
राएल गुगेलमिन कुन्हा

3
@ और यह लोगों को और अधिक सुरक्षित तरीके से MySQL का उपयोग करने के लिए मजबूर करेगा। अपने डेटाबेस पर रूट उपयोगकर्ता को पासवर्ड के बिना लॉगिन करने की अनुमति देना कभी भी एक अच्छा विचार नहीं है। यह एक स्थानीय विकास मशीन पर ठीक हो सकता है, लेकिन एक सर्वर पर यह बहुत खतरनाक है।
डैन

2
@Dan - यह मेरी सबसे बड़ी पकड़ है - इसने बिना किसी चेतावनी के Ubuntu 16.04 में अपग्रेड करने के बाद मेरे स्थानीय विकास के माहौल को तोड़ दिया। मुझे इस बात से एतराज नहीं है कि नए इंस्टॉलेशन के लिए यह डिफ़ॉल्ट है लेकिन अपडेट इंस्टॉल करने से पहले कम से कम पूछ सकते हैं।
एंड्रीस

10

मैं उसी समस्या का सामना कर रहा था जब phpmyadmin (Ubuntu 16.04LTS) के साथ mariaDB का उपयोग कर रहा था।

आवश्यक शर्तें:

1) MariaDB स्थापित करें

sudo apt-get -y install mariadb-server mariadb-client
sudo mysql_secure_installation (answer to some interactive questions):
    Enter current password for root (enter for none): <enter>
    Set root password: n
    Remove anonymous users: n
    Disallow root login remotely: n
    Remove test database and access to it: n
    Reload privilege tables now: Y

यदि आप स्थापना रद्द करना चाहते हैं mariaDB:

sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean

2) phpmyadmin स्थापित करें

sudo apt-get -y install phpmyadmin (and answer some interactive questions)
    Configuring phpmyadmin:
        Web server to reconfigure automatically: apache2
        Configure database for phpmyadmin with dbconfig-common: Yes
        MySQL application password for phpmyadmin: <blank>

3) Apache2 में, phpmyadmin के लिए एक प्रतीकात्मक लिंक बनाएं

sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin.conf
sudo service apache2 restart

ठीक है, अब, यदि आप Rael के निर्देशों का पालन करते हैं, तो आप लॉगिन कर पाएंगे phpmyadmin, लेकिन, कम से कम मेरे लिए, मैं एक नया संदेश बनाने में सक्षम नहीं था, जैसा कि एक लाल संदेश आया: No privileges(या कुछ इसी तरह का संदेश)

फिक्स phpmyadmin को पुन: कॉन्फ़िगर करके और कुछ इंटरेक्टिव प्रश्नों का उत्तर देने के द्वारा किया गया था।

sudo dpkg-reconfigure phpmyadmin
<Ok>
Reinstall database for phpmyadmin: <Yes>
Connection method for MySQL database server for phpmyadmin: TCP/IP
Host name of the MySQL database server for phpmyadmin: localhost
Port number for the MySQL service: 3306
MySQL database name for phpmyadmin: phpmyadmin
<Ok>
MySQL username for phpmyadmin: root
MySQL application password for phpmyadmin: pass  # OR ANY PASSWORD YOU WANT
Password confirmation: pass
Name of the database's administrative user: root
Web server to reconfigure automatically: apache2
An error occurred while installing the database: ignore

अब अगर आप phpmyadmin ( localhost/phpmyadmin) का उपयोग करके कनेक्ट करने का प्रयास करते हैं

username: root
password: pass

आप डेटाबेस बनाने में सक्षम होंगे।


1
आपके उत्तर के लिए धन्यवाद। लेकिन क्या यह बेहतर नहीं था कि आप पूरे के बजाय अंतिम भाग साझा करें? मुझे लगता है कि बाकी यहाँ उपयोगी नहीं है?
मुस्तफा अहंगराह

@MostafaAhangarha शायद पोस्ट थोड़ी लंबी है, लेकिन मैं हमेशा उस संदर्भ को जानना पसंद करता हूं जिसमें एक उत्तर दिया जाता है।
डैन कॉस्टिनल

क्या रनिंग sudo dpkg-reconfigure phpmyadmin का मड़ियादब स्थापित करने और mysql को हटाने का कोई संबंध है? यदि हाँ, तो आपकी जानकारी उपयोगी हो सकती है (हो सकता है क्योंकि आप mysql को हटाने का सुझाव दे रहे हैं जो DB मैं उपयोग कर रहा हूं और मैं उपयोग करूंगा)। यदि नहीं, तो इसे संदर्भ के रूप में देने का कोई मतलब नहीं है। अगर मैं गलत हूं, तो मुझे सही करें।
मुस्तफा अहंगराह

2
मैंने केवल पुनर्निर्माण का पालन किया और अब यह काम करता है।
cwhisperer

क्या रूट अकाउंट के लिए कोई पासवर्ड होना अच्छा है?
kurdtpage

6

उबंटू में 16.04 के लिए मैसूर 5.7 टेबल जानकारी के नीचे की जाँच करें और आवश्यक सेटिंग्स करें:

mysql>  SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| root             | localhost | auth_socket           |
| mysql.session    | localhost | mysql_native_password |
| mysql.sys        | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
| phpmyadmin       | localhost | mysql_native_password |
| root             | %         | mysql_native_password |
+------------------+-----------+-----------------------+

जांचें कि क्या रूट में ost_socket प्लगइन है तो कमांड के नीचे चलाएं:

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

यह अगले MySQL aptअपडेट तक काम करेगा । यानी, आपको Ubuntu पर हर MySQL अपडेट के बाद इसे लागू करना होगा।
राएल गुगेलमिन कुन्हा

6

अगर phpymadmin कनेक्ट नहीं हो सकता है तो यह सेट किए गए ऑर्किटेक्ट मैकेनिज्म के कारण हो सकता है auth_socket। आप इसे इस तरह से एक नियमित पासवर्ड का उपयोग करने के लिए बदल सकते हैं:

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

मैं अभी-अभी उबंटू 18.04 की एक क्लीन इंस्टाल पर इससे जूझ रहा था और यही काम करता है। यहाँ एक सभ्य लेख है जो अधिक व्याख्या कर रहा है:

https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/


3

पूर्णता के लिए, मुझे मेरीडब वर्जन 10.1.23 का उपयोग करने में मेरी परेशानी का हल मिल गया है। नए उपयोगकर्ता को सेटअप करने के लिए उपयोग किए जाने वाले सिंटैक्स @Rael Gugelmin Cunha से ऊपर बताए गए पोस्ट के समान है, मैंने उसी समस्या का सामना करने वाले अन्य लोगों के संदर्भ के लिए अपना समाधान यहां रखा है:

root@raspberrypi:# sudo mysql --user=root mysql
use mysql;
CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_password';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

सादर


1
उबंटू पूछने के लिए आपका स्वागत है! उबंटू पूछो केवल उबंटू के लिए है, कृपया रास्पियन (डेबियन पर आधारित) के बारे में जवाब पोस्ट न करें।
फॉस्क्लिनक्स

2
@ubashu यह समाधान रास्पियन विशिष्ट नहीं है, यह मारबीडीबी विशिष्ट है।
थॉमस वार्ड

धन्यवाद! फिर भी नया डेटाबेस बनाने का कोई विकल्प नहीं है।
खतरे '९

2

मेरे पास एक ही समस्या थी, मैंने ज्यादातर सलाह का पालन किया है और इसमें से कोई भी मेरे लिए काम नहीं करता है! मेरा मुद्दा वैसा ही था जब मैंने अपने ब्राउज़र में http: // localhost / phpmyadmin खोला, यह विवरण में लॉग के लिए पूछा।

मैं उपयोगकर्ता के रूप में रूट का उपयोग कर रहा था , और मुझे पता था कि पासवर्ड सही था। और मुझे मिल रहा था

# 1698 - उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' के लिए अस्वीकृत

यह सब लिया phpmyadminउपयोगकर्ता के रूप में उपयोग करने के लिए था , न rootकि ज्ञात पासवर्ड के साथ और इसने मुझे अंदर जाने दिया।


3
आपका मतलब है कि उपयोगकर्ता नाम "phpmyadmin" होना चाहिए?
मुस्तफा अहंगराह

1
हाँ यह मेरे लिए काम किया
plutesci

और मेरे लिए जो एक ट्यूटोरियल का अनुसरण करता था, पासवर्ड "some_pass" हाहा था। धन्यवाद!
मार्सेलो ilgil

@ Marcelo mygil मैंने अपने उपरोक्त उत्तर में कई चेतावनी दी है, जिससे लोगों को some_passवास्तविक पासवर्ड से बदलने के लिए कहा गया है!
राएल गुगेलमिन कुन्हा

1

Rael Cunha का जिक्र:

हां उसका समाधान काम करता है, और मैंने दूसरों की कोशिश की है। हालाँकि, एक कॉन्फ़िगरेशन फ़ाइल पर एक उजागर पासवर्ड वाले उपयोगकर्ता की बात करते हुए, /etc/dbconfig-common/phpmyadmin.confसिस्टम-वाइड एक्शन के लिए सुरक्षा दोष की तरह दिखता है।

इसलिए मैं सुझाव MariaDB 10.1.xदूंगा कि क्या संबंध है (some_user और some_pass कुछ भी होगा जो आप के साथ आ सकते हैं):

# mysql -u root
use mysql;
CREATE USER 'some_user'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON \*.\* TO 'some_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

और phpadmin सेटअप (4) के रूप में छोड़ रहा है।

बाद में अपनी साख के साथ phpmyadmin में प्रवेश करें

अपने स्वयं के सेटअप पर, मैं सुरक्षा उद्देश्यों के लिए उपरोक्त '%' को 'लोकलहोस्ट' द्वारा बदल देता हूं, लेकिन यदि आपके पास अपने सर्वर पर 3306 पोर्ट बंद हैं, जो जरूरी नहीं कि आपके लिए एक सुरक्षा जोखिम पेश करे।


0

केवल नीचे दिए गए कोड ubuntu 18.04, php 7 से ऊपर और mysql 5.7 के लिए काम करता है

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

'Phpmyadmin' को प्रतिस्थापित न करें। किसी भी अन्य उपयोगकर्ता को बनाने का पूर्ण विशेषाधिकार नहीं है जैसे नया उपयोगकर्ता बनाना, उस तरह से उपयोगकर्ता को डेटाबेस विशेषाधिकार प्रदान करना। केवल phpmyadmin उपयोगकर्ता पूर्ण पहुँच प्राप्त करेगा।


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