2011-01-06 4 views
5

क्या MySQL होस्ट नाम प्राप्त करने के लिए फ़ंक्शन में बनाया गया है?MySQL अंतर्निर्मित फ़ंक्शन 'current_user()' एक होस्टनाम को '%' प्रतीक क्यों देता है?

को

select user(); //this returns [email protected] 

संपादित समान:

select current_user(); //returns [email protected]% 

अंतिम प्रतीक % है - क्यों?

उत्तर

3
select current_user(); returns [email protected]% last simbol is % why ?? 

% पा सकते हैं mysql.user में रिकॉर्ड है कि आपके वर्तमान लॉगिन से मेल करना

जो

select concat(user, '@', host) from mysql.user; 
से प्राप्त किया जा सकता है

% होस्ट मूल्य द्वारा निर्धारित किया जाता है।

2

क्या आप CURRENT_USER फ़ंक्शन ढूंढ रहे हैं।

उपयोगकर्ता नाम और होस्ट नाम कि सर्वर वर्तमान ग्राहक प्रमाणित करने के लिए इस्तेमाल किया MySQL खाते के लिए संयोजन देता है। यह खाता आपके एक्सेस विशेषाधिकार निर्धारित करता है।

CURRENT_USER() का मान उपयोगकर्ता() के मान से भिन्न हो सकता है।

+1

चयन current_user (; उपयोगकर्ता @10.0.3.% देता है अंतिम सिमबोल% क्यों है ?? – Edmhs

+0

जहां आपका डेटाबेस होस्ट किया गया है। नेटवर्क पर आपकी स्थानीय मशीन या कहीं और। और आप किस प्रकार का नेटवर्क उपयोग कर रहे हैं। क्या यह आभासी वातावरण है? – NAVEED

+0

डीबी वीपीएन नेटवर्क पर स्थित है, नहीं, यह वर्चुअल नहीं है। – Edmhs

3

उसका काम नहीं करेगा?

substring_index (उपयोगकर्ता(), '@', -1) होस्टनाम के रूप में चुनें;

उपरोक्त गलत है, यह उपयोगकर्ता के आईपी होस्ट होस्ट नहीं करता है। मुझे स्थानीय पर परीक्षण करके बेवकूफ़ बना दिया गया था। उसके लिए माफ़ करना।


मैं इस रिटर्न होस्ट नाम लगता है, लेकिन यह उपयोगी नहीं होगा जब तक आप बस एक FYI करें grep, pipe और cut के लिए तैयार हैं:

C:\>mysqladmin -u username -pmypassword -h dev.naishelabs.com version 

mysqladmin Ver 8.41 Distrib 5.0.22, for Win32 on ia32 
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB 
This software comes with ABSOLUTELY NO WARRANTY. This is free software, 
and you are welcome to modify and redistribute it under the GPL license 

Server version   5.0.77 
Protocol version  10 
Connection    dev.naishelabs.com via TCP/IP 
TCP port    3306 
Uptime:     73 days 5 hours 7 min 45 sec 
+0

यह आईपी का आईपी वापस नहीं करेगा, होस्ट आईपी नहीं :( – Edmhs

+0

@Eddsstudio वास्तव में आप सही हैं! – Nishant

2

आप user() और current_user() कार्यों का उपयोग कर सकते हैं। आप केवल होस्टनाम चाहते हैं select substr(current_user(),LOCATE('@', current_user())+1) AS localhost;
की तरह कुछ आप विवरण here

+0

यह मुझे 10.43.0% देता है अंत में% के साथ% – Edmhs

+0

% अंत में इसका मतलब है कि आप प्रत्येक से कनेक्ट कर सकते हैं आईपी ​​में सीमा 10.43.0.1 .. 10.43.0.255 (मुझे यकीन नहीं है, यह वही है जो मैं मानता हूं) – cristian

+0

"10.43.0%%" आपके वर्तमान उपयोगकर्ता का हिस्सा है, यही वह है जिसे आपने एक्सेस दिया है , और mysql तालिकाओं में संग्रहीत है। (यानी, [email protected]% उपयोगकर्ता है क्योंकि mysql इसे अपने उपयोगकर्ता टेबल से जानता है, आईपी भाग सीधे आपके सर्वर से कनेक्शन से नहीं लिया जाता है) – nos

7

SELECT @@ होस्टनाम;

- mysql 4.1 में यह नहीं था।

2

आप डेटाबेस सर्वर का होस्ट नाम चाहते हैं, आप शो चर का उपयोग कर सकते हैं:

mysql> SHOW VARIABLES LIKE 'hostname'; 

+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| hostname  | munda | 
+---------------+-------+ 
1 row in set (0.00 sec) 

यह एक में निर्मित समारोह इसलिए यह एक SELECT कथन में नहीं किया जा सकता है।

1

@@hostname चर प्रणाली होस्ट नाम शामिल हैं:

$ cat /etc/hostname 
bruno 

$ hostname 
bruno 

$ mysql 
mysql> SELECT @@hostname; 
+------------+ 
| @@hostname | 
+------------+ 
| bruno  | 
+------------+ 

ध्यान दें कि यह संयुक्त और अन्य प्रश्नों में इस्तेमाल किया जा सकता है:)

mysql> SELECT name, @@hostname FROM people; 
+-------+-------------+ 
| name | @@hostname | 
+-------+-------------+ 
| Dotan | bruno  | 
+-------+-------------+ 

mysql> SELECT CONCAT('I am on server ', @@hostname); 
+---------------------------------------+ 
| CONCAT('I am on server ', @@hostname) | 
+---------------------------------------+ 
| I am on server bruno     | 
+---------------------------------------+ 
+0

ध्यान दें कि यह उत्तर मूल रूप से पूछे जाने वाले प्रश्न का उत्तर देता है 'क्या माइस्क्ल ने मेजबान नाम प्राप्त करने के लिए फ़ंक्शन में निर्माण किया है?' और यह कि प्रश्न और शीर्षक को पूरी तरह से एक अलग प्रश्न में संपादित किया गया है। – dotancohen

संबंधित मुद्दे