क्या mysql में आपके वर्तमान उपयोगकर्ता नाम को जानने का कोई तरीका है?


88

मैं जानना चाहूंगा कि क्या mysql क्वेरी के लिए उपयोगकर्ता का उपयोगकर्ता नाम वापस करने का कोई तरीका है जो क्वेरी जारी करता है।

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

जवाबों:


77

CURRENT_USER()फ़ंक्शन का प्रयास करें । यह उस उपयोगकर्ता नाम को लौटाता है जिसका उपयोग MySQL ने आपके क्लाइंट कनेक्शन को प्रमाणित करने के लिए किया था। यह वह उपयोगकर्ता नाम है जो आपके विशेषाधिकार निर्धारित करता है।

यह क्लाइंट द्वारा MySQL को भेजे गए उपयोगकर्ता नाम से भिन्न हो सकता है (उदाहरण के लिए, MySQL आपके ग्राहक को प्रमाणित करने के लिए अनाम खाते का उपयोग कर सकता है, भले ही आपने उपयोगकर्ता नाम भेजा हो)। यदि आप चाहते हैं कि कनेक्ट करने के दौरान USER()फ़ंक्शन का उपयोग करते समय उपयोगकर्ता नाम MySQL को भेजा जाए ।

मान सर्वर से कनेक्ट करते समय आपके द्वारा निर्दिष्ट उपयोगकर्ता नाम और क्लाइंट होस्ट को इंगित करता है जिससे आप जुड़े थे। मान CURRENT_USER () से भिन्न हो सकता है।

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-user


आपके उत्तर के लिए धन्यवाद, अगर मैं इसे सही ढंग से पढ़ रहा हूं, तो USER () के बजाय CURRENT_USER () का उपयोग करने का लाभ यह है कि CURRENT_USER () केवल प्रमाणित उपयोगकर्ताओं को लौटाएगा?
user1090729

मूल रूप से, क्लाइंट प्रमाणीकरण के लिए उपयोग करने के लिए एक उपयोगकर्ता को निर्दिष्ट कर सकता है - लेकिन उस विशिष्ट उपयोगकर्ता के पास टेबल पर अनुदान अधिकार नहीं हो सकता है। फिर भी, तालिका पर अनाम अधिकारों के कारण पहुंच अभी भी दी जा सकती है। यह फ़ंक्शन उपयोगकर्ता को अनुदान अधिकारों में लौटाता है जो क्लाइंट द्वारा निर्दिष्ट उपयोगकर्ता के बजाय उपयोगकर्ता (शायद अनाम) को प्रमाणित करने के लिए उपयोग किया गया था। डॉक्स में एक अच्छा उदाहरण है।
स्कूट्रू

1
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 'CURRENT_USER()' at line 1
उपयोगकर्ता

15
क्या आपने अपनी क्वेरी में SELECT को याद रखा है, यानी: SELECT CURRENT_USER (); अपनी क्वेरी पोस्ट करें।
स्कूट्रू

1
मैंने यह परीक्षण करने की कोशिश की और CURRENT_USER()सवाल के लिए सही नहीं था "क्या mysql में आपका * वर्तमान उपयोगकर्ता नाम जानने का कोई तरीका है ?"। उत्तर "USER ()" था, जो "वर्तमान MySQL उपयोगकर्ता को लौटाता है" ( dev.mysql.com/doc/refman/5.7/en/… )। आपको अपना उत्तर अधिक पूर्ण होने के लिए अपडेट करना चाहिए, यह बहुत छोटा है।
जेम्स विल्किंस

87

या तो दौड़ने की कोशिश करो

SELECT USER();

या

SELECT CURRENT_USER();

यह कभी-कभी भिन्न हो सकता है, USER () आपके द्वारा प्रमाणित करने के लिए कौन सा लॉगिन करके लौटेगा और CURRENT_USER () वापस आ जाएगा, जिसे आपको वास्तव में प्रमाणित करने की अनुमति थी।




3

डेटाबेस का उपयोग करने वाले वर्तमान उपयोगकर्ता को प्रिंट करने के लिए

select user();

या

select current_user();

3
मुझे आपका उत्तर ज्यादा पसंद नहीं है, न केवल यह कि पहले जो उत्तर दिया गया था, उसमें कुछ भी नया नहीं जोड़ा गया है, लेकिन आपका उत्तर सबसे महत्वपूर्ण हिस्सा है: उन दो कार्यों के बीच का अंतर।
जोनाथन पैरेंट लेवेस्क

2
किसी संग्रहीत प्रोग्राम या दृश्य के भीतर, CURRENT_USER () उस उपयोगकर्ता के लिए खाता लौटाता है जिसने SQL SECURITY INVOKER विशेषता के साथ परिभाषित होने तक ऑब्जेक्ट को परिभाषित किया है (जैसा कि इसके DEFINER मान द्वारा दिया गया है)। उत्तरार्द्ध मामले में, CURRENT_USER () ऑब्जेक्ट का आह्वानकर्ता लौटाता है। ट्रिगर और ईवेंट्स में SQL सुरक्षा विशेषता को परिभाषित करने का कोई विकल्प नहीं है, इसलिए इन ऑब्जेक्ट्स के लिए, CURRENT_USER () ऑब्जेक्ट को परिभाषित करने वाले उपयोगकर्ता के लिए खाता लौटाता है। चालान वापस करने के लिए, USER () या SESSION_USER () का उपयोग करें। dev.mysql.com/doc/refman/5.5/en/string-functions.html
जोनाथन पैरेंट लेवेस्क

किसी के पास उन कार्यों के सभी इतिहास को पढ़ने का समय नहीं है, और किसी ने भी उन कार्यों के बारे में आपका स्पष्टीकरण नहीं पूछा, मुख्य सवाल यह था कि mysql में एक उपयोगकर्ता नाम कैसे पाया जाए, उसने उन दो बयानों के अंतर के बारे में नहीं पूछा। और मौजूदा उत्तरदाता के लिए नया जोड़ने के लिए कुछ भी नहीं है, इसके एकमात्र उत्तर का कारण है, इसका उत्तर देकर उपयोगकर्ता को विश्वास दिलाता है कि यह उत्तर है।
प्रशान्त कुमार

2

आप यह भी उपयोग कर सकते हैं: mysql> उपयोगकर्ता का चयन करें, mysql.user से होस्ट करें;

+---------------+-------------------------------+
| user          | host                          |
+---------------+-------------------------------+
| fkernel       | %                             |
| nagios        | %                             |
| readonly      | %                             |
| replicant     | %                             |
| reporting     | %                             |
| reporting_ro  | %                             |
| nagios        | xx.xx.xx.xx                 |
| haproxy_root  | xx.xx.xx.xx
| root          | 127.0.0.1                     |
| nagios        | localhost                     |
| root          | localhost                     |
+---------------+-------------------------------+

1

आप MySQL में CURRENT_USER () फ़ंक्शन के साथ वर्तमान उपयोगकर्ता नाम पा सकते हैं।

पूर्व के लिए: SELECT CURRENT_USER();

लेकिन CURRENT_USER()हमेशा लॉग इन यूजर को नहीं लौटाएगा। इसलिए यदि आप उपयोगकर्ता में लॉग इन करना चाहते हैं, तो SESSION_USER()इसके बजाय उपयोग करें ।

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