2011-11-27 33 views
69
Show Database 
Use database 
show tables 
Describe <table> 

Tất cả tốt và tốt, nhưng có thể hiển thị máy chủ kết nối hiện tại. Không phải connection_id, nhưng Địa chỉ IP hoặc Tên của máy chủ lưu trữ.Hiển thị máy chủ MySQL qua Lệnh SQL

Trả lời

139

Để có được tên máy chủ hiện tại: -

select @@hostname; 
show variables where Variable_name like '%host%'; 

Để có được host cho tất cả các yêu cầu gửi đến: -

select host from information_schema.processlist; 

Dựa trên nhận xét cuối cùng của bạn,
Tôi không nghĩ rằng bạn có thể giải quyết IP cho tên máy chủ sử dụng hàm mysql thuần túy,
vì nó yêu cầu tra cứu mạng, có thể mất nhiều thời gian.

Tuy nhiên, tài liệu mysql đề cập đến điều này: -

resolveip google.com.sg 

tài liệu: - http://dev.mysql.com/doc/refman/5.0/en/resolveip.html

+0

Tôi không có máy chủ từ xa để kiểm tra trên ATM, nhưng "SELECT @@ tên máy chủ" cung cấp cho máy chủ lưu trữ cục bộ của tôi. Nếu phiên MySQL được kết nối với một máy chủ khác, nó sẽ hiển thị tên máy chủ từ xa? Tôi có thể nhận được IP không? –

+0

Có, nó sẽ hiển thị máy chủ lưu trữ khác nhau nếu bạn đến từ máy chủ khác. Tuy nhiên, để giải quyết IP tương ứng hơi khó ... – ajreal

+0

Có thể nhận IP từ My-SQL không? Điều đó thật tuyệt. Lên một phiếu bầu cho @@ Hostname, cảm ơn bạn !! Sẽ chấp nhận nếu không thể trên IP –

16

lẽ

mysql> show processlist; 
+1

Đây là một gợi ý không đúng nếu bạn đang cố gắng truy cập từ xa. –

2

Tôi nghĩ bạn cố gắng để có được các máy chủ từ xa của người sử dụng conneting ..

Bạn có thể nhận được một Chuỗi như 'myuser @ localhost' từ lệnh:

SELECT USER() 

Bạn có thể chia kết quả này trên '@' dấu hiệu, để có được những phần:

-- delivers the "remote_host" e.g. "localhost" 
SELECT SUBSTRING_INDEX(USER(), '@', -1) 

-- delivers the user-name e.g. "myuser" 
SELECT SUBSTRING_INDEX(USER(), '@', 1) 

nếu bạn đang conneting qua địa chỉ ip bạn sẽ nhận được ipadress thay vì tên máy.

0
show variables where Variable_name='hostname'; 

Điều đó có thể giúp bạn !!

Các vấn đề liên quan