2009-05-25 9 views
0

Bei der Arbeit habe ich eine App auf Oracle 7.3 (alte Sachen, ja). Kürzlich habe ich versucht, ein Konto zu erstellen, das in der Lage wäre, alle Tabellen zu wählen, aber nichts anderes, d. H. Keine Aktualisierungen oder Löschungen. Aber jedes Mal, wenn ich ein neues Konto erstelle, hat es bereits Zugriff auf alle Anwendungstabellen. Ich habe es sogar nur auf CREATE SESSION reduziert. Das hat nicht geholfen - der Benutzer konnte trotzdem jede Tabelle aktualisieren!ORACLE 7.3 Benutzerverwaltung

So fand ich, dass es eine ganze Reihe von öffentlichen Synonyme genau benannt wie Tabellen (d. H. Tabelle myTable123, öffentliche Synonym myTable123). Ich habe einen von ihnen entfernt und der Benutzer war nicht in der Lage, SELECT auf dieser speziellen Tabelle. Dann habe ich eine neue Tabelle erstellt und der neue Benutzer konnte sie offensichtlich nicht sehen. Ich habe ein öffentliches Synonym für diese Tabelle hinzugefügt, in der Hoffnung, dass der Benutzer darauf zugreifen könnte. Kein Glück, dass der neue Benutzer es nicht sehen konnte. Das würde Sinn machen, da keine GRANTs gegeben wurden. Es muss noch etwas anderes geben ....

Ich bin kein Oracle-Experte und versuche dieses Problem auf den Grund zu bringen, aber bislang kein Glück. Bitte helfen Sie mit Ihren Vorschlägen. Prost! Damo

Antwort

5

Wie tuinstoel sagt, können Sie die öffentlichen Synonyme ignorieren - das hat keinen Einfluss auf die Berechtigungen.

Es ist möglich, Ihr, dass, wenn Ihre ursprünglichen Tabellen der Schöpfer ein

tat erstellt wurden
grant [permissions] on [table] to public 

wo [Berechtigungen] als „alle“ so breit sein könnte, die jeden neuen Benutzer automatisch auf erteilten Berechtigungen würde bedeuten würde diese Tabellen.

Does

select * from ALL_TAB_PRIVS where table_name = '[one of your problem tables]' 

Rückkehr irgendetwas?

BTW - nie verwendet Oracle 7.3.3 - Ich nehme an, dass sich im Berechtigungsmodell nicht viel geändert hat.

+0

Hobo, Danke für Ihre Antwort! Ich denke du hast es geschafft. Ich bin diese Woche im Urlaub, werde es aber überprüfen, sobald ich wieder bei der Arbeit bin. Danke! Damo –

1

Oracle 7.3 ist nicht nur alt, es ist sehr, sehr, sehr alt. Es ist 12 oder 13 Jahre alt.

Das Erstellen oder Löschen von öffentlichen Syns ändert die Zugriffsrechte auf eine Tabelle nicht. Der einzige Grund, um öffentliche Synonyme zu erstellen, besteht darin, den Zugriff auf eine Tabelle zu ermöglichen, ohne sie mit ihrem Schemanamen voranzutreiben.

Ich denke, Ihre alten Benutzer haben Privilegien wie "jede Tabelle aktualisieren" und "beliebige Tabelle auswählen" oder "dba".

+0

Ich denke, es ist 14 Jahre alt. Die Dokumente sind Copyright 1995. – RussellH

Verwandte Themen