MySQL उपयोगकर्ता DB में पासवर्ड कॉलम नहीं हैं - OSX पर MySQL स्थापित करना


172

मैं MySql रूट पासवर्ड बदलने की कोशिश कर रहा हूं।

मैंने जो किया है वह नीचे है।

  1. MySql-5.7.6 ~ .dmg (कम्युनिटी सर्वर) और कार्यक्षेत्र स्थापित करें।
  2. OSX सिस्टम वरीयताओं पर सर्वर को बंद करें।
  3. MySql को कंसोल से एक्सेस करें। आज्ञा थीmysqld_safe --skip-grant
  4. निष्पादित करें update user set password=password('1111') where user='root';और एक त्रुटि संदेश मिला -> ERROR 1054 (42S22): Unknown column 'password' in 'field list'

FYI करें, मैंने किया use mysql;। इसलिए मैंने उपयोगकर्ता तालिका पर क्वेरी का चयन किया और पाया कि पासवर्ड कॉलम वास्तव में मौजूद नहीं है।

यह बहुत ही अजीब है। क्या यह संभव है कि मूल उपयोगकर्ता तालिका में पासवर्ड कॉलम नहीं है?

मैं पासवर्ड कैसे बदल सकता हूं, जो मौजूद नहीं है?

आपके उत्तर के लिए धन्यवाद: डी


अब मैं फिर से परीक्षण करता हूं और मैं PW के बिना MySQL तक पहुंच सकता हूं :( क्या यह बदलना ठीक है (मेरा मतलब है कि उपयोगकर्ता तालिका में परिवर्तन करें और क्वेरी के माध्यम से पासवर्ड कॉलम जोड़ें) उपयोगकर्ता तालिका?
Juneyoung ओह

SET PASSWORD रूट के लिए @ localhost = पासवर्ड ('नया-पास') - किसी भी mysql संस्करणों के लिए काम करता है
SIDU

UPDATE mysql.user SET authentication_string= 'password' WHERE User = 'root'; क्योंकि फ़ील्ड 'पासवर्ड' को mysql द्वारा हटा दिया गया था और इसे प्रमाणीकरण_स्ट्रिंग के साथ बदल दिया गया था। नोट: कि mysql फ़ंक्शन PASSWORD ('पासवर्ड') MD5 एल्गोरिथ्म पर निर्भर करता है जो कि जन्म दिन के हमले का उपयोग करके बहुत पहले क्रैक किया गया था। इसलिए इसका उपयोग करने से सुरक्षा की झूठी भावना पैदा होती है क्योंकि एक हमलावर सिर्फ सार्वजनिक वेबसाइट जैसे hashkiller.co.uk/md5-decrypter.aspx में पैदा होने वाले हैश को पेस्ट कर सकता है और आपके सादे टेक्स्ट पासवर्ड को पुनः प्राप्त कर सकता है।
डॉ। देव

जवाबों:


556

MySQL 5.7 में, mysql.user तालिका फ़ील्ड में पासवर्ड फ़ील्ड को हटा दिया गया था, अब फ़ील्ड का नाम 'प्रमाणीकरण_स्ट्रिंग' है।

पहले डेटाबेस चुनें:

mysql>use mysql;

और फिर तालिकाएँ दिखाएं:

mysql>show tables;

आपको उपयोगकर्ता तालिका मिल जाएगी, अब देखते हैं इसके क्षेत्र:

mysql> describe user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field                  | Type                              | Null | Key | Default               | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host                   | char(60)                          | NO   | PRI |                       |       |
| User                   | char(16)                          | NO   | PRI |                       |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Insert_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Update_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Delete_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Create_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Drop_priv              | enum('N','Y')                     | NO   |     | N                     |       |
| Reload_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Shutdown_priv          | enum('N','Y')                     | NO   |     | N                     |       |
| Process_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| File_priv              | enum('N','Y')                     | NO   |     | N                     |       |
| Grant_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| References_priv        | enum('N','Y')                     | NO   |     | N                     |       |
| Index_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Alter_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Show_db_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Super_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Create_tmp_table_priv  | enum('N','Y')                     | NO   |     | N                     |       |
| Lock_tables_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Execute_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Repl_slave_priv        | enum('N','Y')                     | NO   |     | N                     |       |
| Repl_client_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Create_view_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Show_view_priv         | enum('N','Y')                     | NO   |     | N                     |       |
| Create_routine_priv    | enum('N','Y')                     | NO   |     | N                     |       |
| Alter_routine_priv     | enum('N','Y')                     | NO   |     | N                     |       |
| Create_user_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Event_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Trigger_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Create_tablespace_priv | enum('N','Y')                     | NO   |     | N                     |       |
| ssl_type               | enum('','ANY','X509','SPECIFIED') | NO   |     |                       |       |
| ssl_cipher             | blob                              | NO   |     | NULL                  |       |
| x509_issuer            | blob                              | NO   |     | NULL                  |       |
| x509_subject           | blob                              | NO   |     | NULL                  |       |
| max_questions          | int(11) unsigned                  | NO   |     | 0                     |       |
| max_updates            | int(11) unsigned                  | NO   |     | 0                     |       |
| max_connections        | int(11) unsigned                  | NO   |     | 0                     |       |
| max_user_connections   | int(11) unsigned                  | NO   |     | 0                     |       |
| plugin                 | char(64)                          | NO   |     | mysql_native_password |       |
| authentication_string  | text                              | YES  |     | NULL                  |       |
| password_expired       | enum('N','Y')                     | NO   |     | N                     |       |
| password_last_changed  | timestamp                         | YES  |     | NULL                  |       |
| password_lifetime      | smallint(5) unsigned              | YES  |     | NULL                  |       |
| account_locked         | enum('N','Y')                     | NO   |     | N                     |       |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
45 rows in set (0.00 sec)

आश्चर्य is पासवर्ड ’नाम का कोई फ़ील्ड नहीं है, पासवर्ड फ़ील्ड को st प्रमाणीकरण_स्ट्रिंग’ नाम दिया गया है। तो, बस यह करें:

update user set authentication_string=password('1111') where user='root';

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

MySQL 5.6 की तुलना में, परिवर्तन काफी व्यापक हैं: MySQL 5.7 में नया क्या है


42
आपने सर मेरा दिन बना दिया।
बाइसनफान 95

3
यह विधि mysqld शुरू करते समय --स्किप-अनुदान-टेबल प्रतिबंध के साथ भी काम करती है। चूँकि आप एक गुमनाम उपयोगकर्ता हैं, जिससे आप पासवर्ड नहीं बदल सकते हैं: ALTER USER 'root' @ 'localhost' आप एक अनाम उपयोगकर्ता अनुमतियाँ त्रुटि।
बाइसनफ़न 95

क्या होगा अगर वहाँ कोई टेबल नहीं हैं?
सहंद

1
पासवर्ड फ़ील्ड का नाम बदलना ... एक निर्णय जिसने बहुत सारे लोगों को इतनी परेशानियाँ
दीं

2
: जब चरण 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;
विश्व

26

यह त्रुटि तब होती है यदि आपने इंस्टॉल पर पासवर्ड सेट नहीं किया है, तो इस स्थिति में mysql यूनिक्स-सॉकेट प्लगइन का उपयोग कर रहा है

लेकिन अगर सेटिंग्स (तालिका mysql.user) से प्लगइन लिंक को हटा दें तो अन्य समस्या होगी। यह समस्या को ठीक नहीं करता है और एक और समस्या पैदा करता है। हटाए गए लिंक को ठीक करने के लिए और पासवर्ड सेट करें ("PWD"):

1) --skip-grant-tablesऊपर बताए अनुसार चलाएं ।

यह काम करता है नहीं करता है तो स्ट्रिंग जोड़ें skip-grant-tablesअनुभाग में [mysqld]की /etc/mysql/mysql.conf.d/mysqld.cnf। फिर करते हैं sudo service mysql restart

2) भागो mysql -u root -p, फिर ("पीडब्ल्यूडी" बदलें):

update mysql.user 
    set authentication_string=PASSWORD("PWD"), plugin="mysql_native_password" 
    where User='root' and Host='localhost';    
flush privileges;

quit

तब sudo service mysql restart। जाँच करें: mysql -u root -p

restartफ़ाइल mysqld.cnf से उस स्ट्रिंग को हटाने से पहले , यदि आप इसे वहाँ सेट करते हैं।


सटीक! जरूरत प्लगइन = "mysql_native_password" और फ्लश विशेषाधिकार। इसे किसी अन्य उदाहरण के साथ काम करने के लिए नहीं मिला। धन्‍यवाद!
TheRealWebGuy

मुझे मिलता हैERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '("MYNEWPASSWORD"), plugin="mysql_native_password"
चांस स्मिथ

आपका जवाब शानदार है! यह एक जवाब है जिसने 6 घंटे की लड़ाई के दौरान मेरी मदद की
एलेक्सनिकोव

प्लगइन = "mysql_native_password" मेरे लिए दंगा हो गया
जॉयनर

मेरे लिए पूरी तरह से काम करता है
मयंक शर्मा

23

एक गड्ढे में मैं गिर गया , अब कोई पासवर्ड फ़ील्ड नहीं है , इसका नाम बदल दिया गया है:

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

अब होना चाहिए:

update user set authentication_string=password('YOURPASSWORDHERE') where user='root';


16

ALTER USERकिसी USERपंक्ति को अपडेट करने के बजाय आदेश का उपयोग करें । ध्यान रखें कि एक से अधिक 'रूट' उपयोगकर्ता हो सकते हैं, क्योंकि उपयोगकर्ता इकाइयाँ उस मशीन द्वारा भी योग्य होती हैं जिनसे वे जुड़ते हैं

https://dev.mysql.com/doc/refman/5.7/en/alter-user.html

उदाहरण के लिए।

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-password' 
ALTER USER 'root'@'*' IDENTIFIED BY 'new-password' 

2
MySQL 5.7.9 के लिए, मुझे ठीक से काम करने के लिए USER का उपयोग करना होगा। धन्यवाद।
शिन

हमें उपर्युक्त कमांड के बाद user \ g की आवश्यकता है। MySql 5.7.12 का उपयोग करना। ty
बोबॉस्ज़

इस उत्तर ने मेरे लिए केवल उबंटू 16.04, mysql 5.7.19 पर काम किया;
A1Gard

क्या उन्होंने @ से * तक वाइल्डकार्ड बदला? जीआरआर ... अब मेरे पास आने से ज्यादा सवाल हैं।
पगडियारियो

4

यह केवल मेरे साथ तब काम किया जब मैंने यहां बताई गई आज्ञाओं के बाद "फ्लश" किया। यहां उन कमांड की पूरी सूची दी गई है जिनका मैंने उपयोग किया है:

पिछले उत्तर बाद के mysql संस्करणों के लिए काम नहीं कर सकते हैं। यदि पिछले उत्तर आपके काम नहीं आए, तो इन चरणों का प्रयास करें:

1- wamp आइकन> mysql> mysql कंसोल पर क्लिक करें

2- एक के बाद एक कमांड लिखिए

use mysql;
update user set authentication_string=password('your_password') where user='root';
FLUSH PRIVILEGES;
quit

4

आपके सहयोग के लिए धन्यवाद। बस अगर लोगों को अभी भी समस्या हो रही है, तो यह प्रयास करें।

MySQL संस्करण 5.6 और उससे कम के लिए

क्या आप अपना Mac OS X 'ROOT' पासवर्ड भूल गए हैं और इसे रीसेट करने की आवश्यकता है? इन 4 सरल चरणों का पालन करें:

  1.  Mysqld सर्वर बंद करो। आमतौर पर यह 'सिस्टम प्रीफ्रंट्स'> MySQL> 'Stop MySQL सर्वर' से किया जा सकता है
  2.  एक टर्मिनल से विशेषाधिकार बाईपास के साथ सुरक्षित मोड में सर्वर शुरू करें:      sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3.  एक नई टर्मिनल विंडो में:      sudo /usr/local/mysql/bin/mysql -u root      UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root';      FLUSH PRIVILEGES;      \q
  4.  Mysqld सर्वर को फिर से बंद करें और इसे सामान्य मोड में पुनरारंभ करें।

MySQL संस्करण 5.7 और ऊपर के लिए

  1.  Mysqld सर्वर बंद करो। आमतौर पर इससे किया जा सकता है 'System Prefrences' > MySQL > 'Stop MySQL Server'
  2.  एक टर्मिनल से विशेषाधिकार बाईपास के साथ सुरक्षित मोड में सर्वर शुरू करें:      sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3.  एक नई टर्मिनल विंडो में:            sudo /usr/local/mysql/bin/mysql -u root      UPDATE mysql.user SET authentication_string=PASSWORD('NewPassword') WHERE User='root';      FLUSH PRIVILEGES;      \q      
  4.  Mysqld सर्वर को फिर से बंद करें और इसे सामान्य मोड में पुनरारंभ करें।


3

इस समस्या के लिए, मैंने एक सरल और अशिष्ट विधि का उपयोग किया, पासवर्ड के लिए फ़ील्ड नाम का नाम बदलें, इसका कारण यह है कि मैं दृश्य संचालन त्रुटि में मैक नेवीकैट प्रीमियम सॉफ्टवेयर का उपयोग करता हूं: 'फ़ील्ड सूची' में अज्ञात कॉलम 'पासवर्ड', सॉफ़्टवेयर स्वयं पासवर्ड का उपयोग करता है ताकि मैं आसानी से काम न कर सकूं। इसलिए, मैं डेटाबेस कमांड लाइन में रूट करता हूं, रन करता हूं

Use mysql;

और फिर फ़ील्ड नाम को संशोधित करें:

ALTER TABLE user CHANGE authentication_string password text;

सब सामान्य होने के बाद।


0

मूल कारण: रूट का कोई पासवर्ड नहीं है, और आपके अजगर कनेक्ट स्टेटमेंट को प्रतिबिंबित करना चाहिए।

1698 त्रुटि को हल करने के लिए, अपने अजगर कनेक्ट पासवर्ड को '' में बदलें।

नोट: मैन्युअल रूप से उपयोगकर्ता के पासवर्ड को अपडेट करने से समस्या हल नहीं होगी, फिर भी आपको 1698 त्रुटि मिलेगी


0

याद रखें पासवर्ड को नीचे की तरह mysql को पुनरारंभ करने के बाद भी सेट करना होगा

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