Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Angemeldete Benutzer Firebird 3 (https://www.delphipraxis.net/201062-angemeldete-benutzer-firebird-3-a.html)

BerndS 19. Jun 2019 14:53

Datenbank: Firebird • Version: 3 • Zugriff über: FIBPLUS

Angemeldete Benutzer Firebird 3
 
Hallo,
bei Interbase ist es möglich die an die Datenbanken angemeldeten Benutzer abzufragen.
FIBPlus und IBX ermitteln das über isc_info_user_names in der Funktion GetUserNames.
Verbindet man sich aber mit eine Firebird Datenbank wird immer nur ein Benutzer zurückgegeben.

Ist jemanden bekannt wie man das bei Firebird macht :?:
Mit einer alten Version vom Sql Manager for Interbase and Firebird werden mir alle Benutzer angezeigt, wenn ich als SYSDBA angemeldet bin. Es muss also irgendwie möglich sein.:?

Bernd

jobo 19. Jun 2019 15:01

AW: Angemeldete Benutzer Firebird 3
 
versuch mal Tabelle MON$ATTACHMENTS

mkinzler 19. Jun 2019 15:10

AW: Angemeldete Benutzer Firebird 3
 
Über die Monitoringtabelle MON$ATTACHMENTS

BerndS 19. Jun 2019 15:21

AW: Angemeldete Benutzer Firebird 3
 
Hallo Jobo

:thumb: Danke über MON$ATTACHMENTS funktioniert es.
Bin ich als SYSDBA angemeldet sehe ich alle Benutzer inklusive Cache Writer und Garbage Collector.
Als normaler Benutzer nur diese ohne SYSDBA.

Kann man per Grant erreichen, dass man den SYSDBA auch angezeigt bekommt?.

Bernd

jobo 19. Jun 2019 15:39

AW: Angemeldete Benutzer Firebird 3
 
Zitat:

Zitat von BerndS (Beitrag 1435040)
Kann man per Grant erreichen, dass man den SYSDBA auch angezeigt bekommt?.

schwierig ohne dem normalen Benutzer erhöhte Rechte zu geben.
Der Database Owner darf das auch sehen. Ich weiß nicht genau, wie das in FB mit dem Scope von Views ist. Es wäre evtl. folgendes mlögich:
Du erzeugst einen View der einfach nur die Attachments tabelle darstellt und zwar als database owner. und den view gibst Du an normale User frei.
Probier einfach mal aus.

Du willst sicher nicht, dass alle User als sysdba rumlaufen nur um den einen Eintrag da zusätzlich zu sehen.. ?

IBExpert 19. Jun 2019 23:03

AW: Angemeldete Benutzer Firebird 3
 
Du kannst dir mit sehr wenig Aufwand so was selber einbauen, wenn du das
mit Database Trigger umsetzt (musst du theoretisch auch nicht löschen,
dann aber aufpassen, weil nach dem letzten abgemeldeten user die
current_connection wieder bei 1 anfängt)



Code:
/******************************************************************************/
/****        Generated by IBExpert 2019.4.14.1 19.06.2019 23:59:54         ****/
/******************************************************************************/

/******************************************************************************/
/****                                Tables                               ****/
/******************************************************************************/



CREATE TABLE USR (
    ID  BIGINT NOT NULL,
    USR VARCHAR(31) CHARACTER SET NONE,
    TS  TIMESTAMP default current_timestamp
);




/******************************************************************************/
/****                             Primary keys                            ****/
/******************************************************************************/

ALTER TABLE USR ADD PRIMARY KEY (ID);


/******************************************************************************/
/****                               Triggers                              ****/
/******************************************************************************/



/******************************************************************************/
/****                       Database event triggers                       ****/
/******************************************************************************/



/* Trigger: USRCONNECT */
CREATE OR ALTER TRIGGER USRCONNECT
ACTIVE ON CONNECT POSITION 0
AS
begin
  insert into usr (id, usr, ts) values (current_connection, current_user, current_timestamp);
end;


/* Trigger: USRDISCONNECT */
CREATE OR ALTER TRIGGER USRDISCONNECT
ACTIVE ON DISCONNECT POSITION 0
AS
begin
  execute statement ('delete from usr where id=:id')(id:=current_connection) with autonomous transaction;
end;


/******************************************************************************/
/****                              Privileges                             ****/
/******************************************************************************/


/* Privileges of users */
GRANT ALL ON USR TO PUBLIC;


/******************************************************************************/
/****                            DDL privileges                           ****/
/******************************************************************************/

BerndS 20. Jun 2019 06:28

AW: Angemeldete Benutzer Firebird 3
 
Danke, das werde ich testen und berichten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz