คุณจะให้ผู้ใช้ที่ใช้งานอยู่เชื่อมต่อกับฐานข้อมูล postgreSQL ผ่าน SQL ได้อย่างไร


คำตอบ:


115

(คำถาม) คุณไม่ได้รับข้อมูลนั้น

เลือก * จากpg_user ;

หรือใช้มุมมองpg_stat_activity :

select * from pg_stat_activity;

เพิ่ม:

มุมมองกล่าวว่า:

หนึ่งแถวต่อกระบวนการเซิร์ฟเวอร์แสดง OID ของฐานข้อมูลชื่อฐานข้อมูล ID กระบวนการ OID ของผู้ใช้ชื่อผู้ใช้แบบสอบถามปัจจุบันสถานะการรอของแบบสอบถามเวลาที่แบบสอบถามปัจจุบันเริ่มดำเนินการเวลาที่กระบวนการเริ่มต้นและที่อยู่ของไคลเอ็นต์และ หมายเลขพอร์ต คอลัมน์ที่รายงานข้อมูลในการสืบค้นปัจจุบันจะพร้อมใช้งานเว้นแต่ว่าจะปิดพารามิเตอร์ stats_command_string นอกจากนี้คอลัมน์เหล่านี้จะมองเห็นได้ก็ต่อเมื่อผู้ใช้ที่ตรวจสอบมุมมองนั้นเป็น superuser หรือเหมือนกับผู้ใช้ที่เป็นเจ้าของกระบวนการที่ถูกรายงาน

คุณไม่สามารถกรองและรับข้อมูลนั้นได้หรือไม่? ที่จะเป็นผู้ใช้ปัจจุบันบนฐานข้อมูลคุณสามารถใช้เวลาเริ่มดำเนินการเพื่อรับแบบสอบถามทั้งหมดจาก 5 นาทีสุดท้ายเช่น ...

อะไรแบบนั้น.


2
ไม่นั่นคือรายชื่อผู้ใช้ที่รู้จักไม่ใช่หมายเลขที่เชื่อมต่ออยู่ในปัจจุบัน
Keltia

แล้วนักสะสมสถิติล่ะ? (ตามลิงค์ที่ชื่อมุมมอง)
balexandre

4
@ mm2010: pg_stat_activity: ผู้ใช้ที่ใช้งานอยู่เท่านั้น pg_user: list all users
Hao

4
ลงคะแนนคำตอบเล็กน้อยและให้ข้อมูลบางอย่างที่อาจทำให้ผู้อ่านในอนาคตเข้าใจผิดเช่น pg_user ไม่มีประโยชน์ในการค้นหาผู้ใช้ที่ใช้งานอยู่ที่เชื่อมต่อกับฐานข้อมูล PostgreSQL
Brad Koch

40

ใช้ข้อมูลของ balexandre:

SELECT usesysid, usename FROM pg_stat_activity;

2
คุณสามารถเพิ่มclient_addrในแบบสอบถามด้านบนเพื่อรับ IP ของลูกค้า
fagiani

7

OP ขอผู้ใช้ที่เชื่อมต่อกับฐานข้อมูลเฉพาะ :

-- Who's currently connected to my_great_database?
SELECT * FROM pg_stat_activity 
  WHERE datname = 'my_great_database';

สิ่งนี้ทำให้คุณได้รับข้อมูลที่น่าสนใจทุกประเภท (ตามที่คนอื่น ๆ กล่าวถึง) เช่น

  • userid (คอลัมน์usesysid)
  • ชื่อผู้ใช้ ( usename)
  • ชื่อแอปพลิเคชันไคลเอนต์ ( appname) หากต้องการตั้งค่าตัวแปรนั้น - psqlทำ :-)
  • ที่อยู่ IP ( client_addr)
  • อยู่ในสถานะอะไร (คอลัมน์สองคอลัมน์ที่เกี่ยวข้องกับสถานะและสถานะการรอ)
  • และเป็นที่ชื่นชอบของทุกคนคำสั่ง SQL ปัจจุบันกำลังรัน ( query)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.