मैं MySQL कमांड लाइन उपयोगिता का उपयोग कर रहा हूं और डेटाबेस के माध्यम से नेविगेट कर सकता हूं। अब मुझे उपयोगकर्ता खातों की एक सूची देखने की आवश्यकता है। मैं यह कैसे कर सकता हूँ?
मैं MySQL संस्करण का उपयोग कर रहा हूं 5.4.1
।
मैं MySQL कमांड लाइन उपयोगिता का उपयोग कर रहा हूं और डेटाबेस के माध्यम से नेविगेट कर सकता हूं। अब मुझे उपयोगकर्ता खातों की एक सूची देखने की आवश्यकता है। मैं यह कैसे कर सकता हूँ?
मैं MySQL संस्करण का उपयोग कर रहा हूं 5.4.1
।
जवाबों:
इस क्वेरी का उपयोग करें:
SELECT User FROM mysql.user;
जो इस तरह से एक तालिका का उत्पादन करेगा:
+-------+
| User |
+-------+
| root |
+-------+
| user2 |
+-------+
जैसा कि मैथ्यू शार्ले इस उत्तर पर टिप्पणियों में बताते हैं , User
यदि आप केवल अनन्य उपयोगकर्ता नाम देखना चाहते हैं, तो आप कॉलम द्वारा समूह कर सकते हैं।
User
भी आवश्यक हो सकता है , केवल अनन्य उपयोगकर्ता मान प्राप्त करने के लिए, क्योंकि प्रत्येक user
@ host
प्रविष्टि के लिए अलग पंक्ति है ।
DELETE FROM mysql.user;
बेहतर है WHERE user='someuser' and host='somehost';
यदि आप करते हैं DELETE FROM mysql.user;
, तो सभी उपयोगकर्ता चले गए हैं। अगले mysql को फिर से शुरू करने या FLUSH PRIVILEGES;
मेमोरी से उपयोगकर्ताओं को समाप्त करने के बाद लॉगिन करें । यहां DELETE FROM mysql.user
जिम्मेदारी से करने पर मेरी एक पोस्ट का एक उदाहरण है : dba.stackexchange.com/questions/4614/…
SHOW GRANTS FOR 'user'@'host';
DISTINCT
कीवर्ड का उपयोग कर सकते हैं :SELECT DISTINCT user FROM mysql.user;
मुझे यह प्रारूप सबसे उपयोगी लगता है क्योंकि इसमें होस्ट फ़ील्ड शामिल है जो उपयोगकर्ता रिकॉर्ड के बीच अंतर करने के लिए MySQL में महत्वपूर्ण है।
select User,Host from mysql.user;
host
mysql डेटाबेस के साथ काम करते समय कब आएगा? [
host
जब आप किसी भिन्न सर्वर से कनेक्ट कर रहे हों तो @Packer खेलने में आता है। अलग-अलग पहुंच प्रदान करना संभव है 'packer'@'example.com'
और'packer'@'google.com'
उपयोगकर्ता खाते में उपयोगकर्ता नाम और होस्ट स्तर की पहुंच शामिल है।
इसलिए, यह क्वेरी है जो सभी उपयोगकर्ता खाते देता है
SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;
user@host
पासवर्ड सेट करने के लिए प्रारूप का उपयोग किया जाता है। होस्ट को SET PASSWORD
कमांड से ओमिट करने में त्रुटि उत्पन्न होती है। SET PASSWORD FOR wordpressuser = PASSWORD('...');
त्रुटि पैदा करता है ERROR 1133 (42000): Can't find any matching row in the user table
। मेजबान को शामिल करें और यह काम करता है। SET PASSWORD FOR wordpressuser@localhost = PASSWORD('...');
पैदा करता है Query OK, 0 rows affected (0.00 sec)
।
ORDER BY user
वह थी उसे जोड़ देना।
जब वे विभिन्न मूल से जुड़ते हैं तो उपयोगकर्ताओं की पुनरावृत्ति से बचने के लिए:
select distinct User from mysql.user;
MySQL अपने डेटाबेस में उपयोगकर्ता की जानकारी संग्रहीत करता है। डेटाबेस का नाम है MySQL
। उस डेटाबेस के अंदर, उपयोगकर्ता जानकारी एक तालिका में है, एक डेटासेट, जिसका नाम है user
। यदि आप देखना चाहते हैं कि उपयोगकर्ता MySQL उपयोगकर्ता तालिका में क्या सेट कर रहे हैं, तो निम्न कमांड चलाएँ:
SELECT User, Host FROM mysql.user;
+------------------+-----------+
| User | Host |
+------------------+-----------+
| root | localhost |
| root | demohost |
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| | % |
+------------------+-----------+
यदि आप वास्तविक MySQL उपयोगकर्ताओं की बात कर रहे हैं, तो कोशिश करें:
select User from mysql.user;
SELECT * FROM mysql.user;
यह एक बड़ी तालिका है इसलिए आप चाहते हैं कि आप किन क्षेत्रों का चयन करें।
localhost
, 127.0.0.1
और ::1
। मुझे कौन सा रखना चाहिए और मुझे क्या हटाना चाहिए? धन्यवाद!
रूट के रूप में mysql में लॉगिन करें और क्वेरी के बाद टाइप करें
select User from mysql.user;
+------+
| User |
+------+
| amon |
| root |
| root |
+------+
GRANT SELECT ON mysql.user TO 'user1'@'localhost';
अब यूजर 1 के रूप में लॉगिन करें और कमांड टाइप करें select User from mysql.user;
आपको उपयोगकर्ता सूची दिखाई देगी। :) +1 आनंद
Mysql.db तालिका संभवतः उपयोगकर्ता अधिकारों का निर्धारण करने में अधिक महत्वपूर्ण है। मुझे लगता है कि यदि आप GRANT कमांड में एक तालिका का उल्लेख करते हैं तो इसमें एक प्रविष्टि बनाई जाती है। मेरे मामले में mysql.users तालिका ने उपयोगकर्ता के लिए कोई अनुमति नहीं दी जब वह स्पष्ट रूप से कनेक्ट करने और चयन करने में सक्षम था, आदि।
mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Del...
मैं इसका उपयोग उपयोगकर्ताओं को क्रमबद्ध करने के लिए करता हूं, इसलिए अनुमत होस्ट को स्पॉट करना अधिक आसान है:
mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;
पीटर और जेसी सही हैं, लेकिन सुनिश्चित करें कि आप पहले mysql DB का चयन करें।
use mysql;
select User from mysql.user;
अपनी चाल चलनी चाहिए
use mysql;
मामले में आप गुंजाइश तालिका mysql डेटाबेस के लिए की तरह तुमने किया था। तुम सिर्फselect User from mysql.user;
use mysql;
सिर्फ इतना है कि आप select User from user;
इसके बजाय select User from mysql.user;
इसका उपयोग कर सकते हैं क्योंकि यह आमतौर पर एक बार की क्वेरी है, mysql db का उपयोग करने की कोई आवश्यकता नहीं है
use mysql
अगर आपने इससे कुछ किया select user from user;
हो सकता है, लेकिन इसके बजाय आप उपयोग कर रहे हैं mysql.user
, जो use mysql
शुरुआत में अनावश्यक उपयोग करता है ।
यह अद्वितीय उपयोगकर्ताओं की सूची प्रदर्शित करता है:
SELECT DISTINCT User FROM mysql.user;
$> mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt
लिनक्स कमांड पर इस कमांड को निष्पादित करने से पहले mysql रूट उपयोगकर्ता का पासवर्ड मांगा जाएगा, सही पासवर्ड प्रदान करने पर यह सभी डेटाबेस उपयोगकर्ताओं को पाठ फ़ाइल में प्रिंट करेगा।
मुझे उसका एक और उपयोगी लगा क्योंकि यह डीएमएल और डीडीएल विशेषाधिकारों के बारे में अतिरिक्त जानकारी प्रदान करता है
SELECT user, Select_priv, Insert_priv , Update_priv, Delete_priv,
Create_priv, Drop_priv, Shutdown_priv, Create_user_priv
FROM mysql.user;
SELECT User FROM mysql.user;
माईस्क्लल यूजर्स को पाने के लिए क्वेरी से ऊपर का उपयोग करें