SQLコマンドを介してMySQLホストを表示する


96
Show Database
Use database
show tables
Describe <table>

すべて順調ですが、現在の接続ホストを表示することは可能ですか。connection_idではなく、ホストのIPアドレスまたは名前。

回答:


197

現在のホスト名を取得するには:-

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

すべての着信リクエストのホストを取得するには:-

select host from information_schema.processlist;

あなたの最後のコメントに基づいて、
純粋なmysql関数を使用してホスト名のIPを解決することはできないと思います
。これには時間がかかる可能性があるネットワークルックアップが必要になるためです。

しかし、mysqlのドキュメントではこれについて言及しています:-

resolveip google.com.sg

docs:-http: //dev.mysql.com/doc/refman/5.0/en/resolveip.html


ATMでテストするリモートホストはありませんが、「SELECT @@ hostname」でローカルホストが提供されます。MySQLセッションが別のホストに接続されている場合、リモートホスト名が表示されますか?IPを取得できますか?
クレイグスチュワート

はい、他のホストから来た場合、別のホストが表示されます。ただし、対応するIPを解決するためには少し難しいです...
ajreal

My-SQLからIPを取得することは可能ですか?それは素晴らしいことです。@@ Hostnameに1票を投じて、ありがとうございます!! IPで不可能な場合は受け入れる
クレイグスチュワート

コマンドラインを使用して、SQL内で現在接続されているリモートホストIPを取得します。理由、スクリプトの寿命私は同じホストに接続されていることをコード内で100%確信できません。
クレイグスチュワート

マレーシア人、しかしシンガポールPR。
ajreal 2015


6

接続しているユーザーのリモートホストを取得しようとしていると思います...

コマンドから 'myuser @ localhost'のような文字列を取得できます。

SELECT USER()

この結果を「@」記号で分割して、パーツを取得できます。

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

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

IPアドレスを介して接続している場合は、ホスト名の代わりにIPアドレスを取得します。


1
show variables where Variable_name='hostname'; 

それはあなたを助けることができます!!


興味深い鉱山はこれで何も返しません。
Vitor Canova

これにより、要求に応じて、接続のクライアントホスト名ではなくサーバーホスト名が返されます...
Hartmut Holzgraefe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.