Signatur
Beschreibung
db2_column_privileges() fragt die Datenbankmetadaten nach den Zugriffsrechten ab, die für einzelne Spalten einer Tabelle vergeben wurden. Das zurückgegebene Statement-Handle kann mit den üblichen Fetch-Funktionen (z. B. db2_fetch_assoc()) zeilenweise ausgelesen werden.
Die Funktion ist besonders nützlich, wenn man zur Laufzeit prüfen möchte, ob ein bestimmter Datenbanknutzer SELECT-, INSERT- oder UPDATE-Rechte auf einzelne Spalten besitzt – beispielsweise beim Aufbau von Administrations-Werkzeugen oder bei der Rechteverwaltung in Enterprise-Anwendungen.
Die Parameter qualifier, schema, table_name und column_name erlauben eine schrittweise Einschränkung der Suche. Alle vier können null sein (alle passenden Einträge werden geliefert) oder einen exakten Namen bzw. ein SQL-Suchmuster mit % und _ enthalten.
Das Ergebnis-Rowset enthält unter anderem die Spalten TABLE_CAT, TABLE_SCHEM, TABLE_NAME, COLUMN_NAME, GRANTOR, GRANTEE, PRIVILEGE und IS_GRANTABLE.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $connection Pflicht | resource | Eine aktive DB2-Datenbankverbindung, wie sie von db2_connect() oder db2_pconnect() zurückgegeben wird. |
|
| $qualifier | string|null | null | Der Katalog-Qualifier (bei DB2 unter z/OS oder iSeries) oder null, um keinen Katalog zu filtern. Unter LUW-Systemen wird dieser Parameter meist auf null gesetzt. |
| $schema | string|null | null | Der Name des Datenbankschemas, dessen Tabellen berücksichtigt werden sollen. Unterstützt SQL-Suchmuster (%, _). null liefert alle Schemata. |
| $table_name | string|null | null | Der Name der Tabelle, für die Spaltenrechte abgefragt werden sollen. Unterstützt SQL-Suchmuster (%, _). null liefert alle Tabellen. |
| $column_name | string|null | null | Der Name der Spalte, für die Rechte abgefragt werden sollen. Unterstützt SQL-Suchmuster (%, _). null liefert alle Spalten der gefundenen Tabellen. |
Rückgabewert
db2_fetch_assoc(), db2_fetch_array() o. ä. ausgelesen werden kann. Schlägt der Aufruf fehl, wird false zurückgegeben.Beispiele
Alle Spaltenrechte einer bestimmten Tabelle ausgeben
<?php
$conn = db2_connect('SAMPLE', 'db2user', 'secret');
if ($conn) {
$result = db2_column_privileges($conn, null, 'DB2ADMIN', 'EMPLOYEE', null);
if ($result) {
while ($row = db2_fetch_assoc($result)) {
printf(
"Spalte: %-20s | Recht: %-10s | Grantee: %-15s | Grantable: %s\n",
$row['COLUMN_NAME'],
$row['PRIVILEGE'],
$row['GRANTEE'],
$row['IS_GRANTABLE']
);
}
} else {
echo 'Fehler beim Abrufen der Spaltenrechte.';
}
db2_close($conn);
}
Rechte für eine bestimmte Spalte per Muster suchen
<?php
$conn = db2_connect('SAMPLE', 'db2user', 'secret');
if ($conn) {
// Alle Spalten, deren Name mit 'SAL' beginnt, in allen Tabellen des Schemas
$result = db2_column_privileges($conn, null, 'DB2ADMIN', '%', 'SAL%');
if ($result) {
while ($row = db2_fetch_assoc($result)) {
echo $row['TABLE_NAME'] . '.' . $row['COLUMN_NAME']
. ' => ' . $row['PRIVILEGE']
. ' für ' . $row['GRANTEE'] . PHP_EOL;
}
}
db2_close($conn);
}
// Wichtig · Fallstricke
Treiber-Voraussetzung: Diese Funktion steht nur zur Verfügung, wenn die ibm_db2-Erweiterung geladen ist (extension=ibm_db2 in der php.ini). Sie ist kein Bestandteil von PDO oder anderen Datenbank-Abstraktionsschichten.
Groß-/Kleinschreibung: DB2 speichert Objektnamen standardmäßig in Großbuchstaben. Schema- und Tabellennamen sollten daher in Großbuchstaben übergeben werden, andernfalls werden keine Ergebnisse geliefert.
Sicherheitshinweis: Die Funktion liefert nur Rechte, die der verbundene Datenbanknutzer abfragen darf. Für vollständige Audit-Zwecke ist ein Benutzer mit entsprechenden Systemrechten erforderlich.