| Autor |
Beitrag |
delphijanka
      
Beiträge: 151
WinXP
D 2009 Arc., Java, C
|
Verfasst: Do 13.08.09 12:07
Hallo.
Habe ein Problem hier, und zwar:
ich lege die Rolle an:
CREATE ROLE RoleABC
dann weise ich der Rolle die erlaubte Rechte:
GRANT SELECT ON TabelleABC TO RoleABC
dann erstelle ich einen user:
CREATE USER UserABC IDENTIFIED BY PasswortABC
dann ordne ich dem User die Rolle zu:
GRANT RoleABC TO UserABC
Die Anmeldung an der DB erfolgt ohne Probleme. Aber ich kann aus der Tabelle TabelleABC nichts lesen, die Fehlermeldung: Tabelle oder View nicht vorhanden.
Woran liegt das? Was mache ich falsch?
Zuletzt bearbeitet von delphijanka am Do 13.08.09 12:53, insgesamt 1-mal bearbeitet
|
|
iKilledKenny
      
Beiträge: 394
Erhaltene Danke: 8
Win XP
D5 Prof, C# Express 2005
|
Verfasst: Do 13.08.09 12:45
Du musst die Rolle für den User aktivieren.
Quelltext 1:
| set role RoleABC identified by RolePassword; |
So funktioniert das zumindest bei Oracle.
|
|
jaevencooler
      
Beiträge: 166
Erhaltene Danke: 6
MS-DOS,Win32, Win95, Win 98, Me,XP, Linux, NT4.0, NT 2000-2008, Vista, Windows 7
Turbo Pascal,D1 Enter,D2 Enter,D3 Enter,D5 Enter, Kylix, D2007, PL/SQL, MS/SQL, Delphi 2010, Delphi XE
|
Verfasst: Do 13.08.09 12:50
Moin, Moin,
du hast auch vergessen dem user seinen Default und temporary tablespace zu zuordnen.
Auch hast die Tabelle in einem anderen tablespace erzeugt, da Du ja noch nicht als der neue User
connected warst, oder ???
Gruß
Michael
_________________ Wissen ist Macht, nichts wissen macht auch nichts...
|
|
delphijanka 
      
Beiträge: 151
WinXP
D 2009 Arc., Java, C
|
Verfasst: Do 13.08.09 12:58
@iKilledKenny
hab dich net verstanden.
@jaevencooler
ich habe die Tabelle unter einem anderen User-Namen erzeugt. Das heisst, die Tabelle liegt "irgendwo", und mit dem neuen User muss ich das bekanntmachen. Aber wie denn?
|
|
iKilledKenny
      
Beiträge: 394
Erhaltene Danke: 8
Win XP
D5 Prof, C# Express 2005
|
Verfasst: Do 13.08.09 13:04
Nachdem du den User an der DB angemeldet hast (die Connection geöffnet hast), musst du für ihn die Rolle aktivieren. Nehme ein TAdoCommand, setze o.g. SQL-Text und führe es aus.
|
|
delphijanka 
      
Beiträge: 151
WinXP
D 2009 Arc., Java, C
|
Verfasst: Do 13.08.09 13:09
@iKilledKenny
Aber ich habe doch dem User bereits eine Rolle zugeordnet, und dieses Sachverhalten ist in der DB immer persistent.
|
|
jaevencooler
      
Beiträge: 166
Erhaltene Danke: 6
MS-DOS,Win32, Win95, Win 98, Me,XP, Linux, NT4.0, NT 2000-2008, Vista, Windows 7
Turbo Pascal,D1 Enter,D2 Enter,D3 Enter,D5 Enter, Kylix, D2007, PL/SQL, MS/SQL, Delphi 2010, Delphi XE
|
Verfasst: Do 13.08.09 13:13
Moin,
delphijanka hat folgendes geschrieben : | @iKilledKenny
hab dich net verstanden.
@jaevencooler
ich habe die Tabelle unter einem anderen User-Namen erzeugt. Das heisst, die Tabelle liegt "irgendwo", und mit dem neuen User muss ich das bekanntmachen. Aber wie denn? |
Das geht folgendermaßen:
select * from BenutzerDerTabelleAngelegthat.TabelleABC
dabei musst du dem neuen benutzer auch entsprechende rechte in dem anderen Schema granten
also etwa so:
grant select on TabelleABC to NeuemBenutzer
Gruß
Michael
_________________ Wissen ist Macht, nichts wissen macht auch nichts...
|
|
delphijanka 
      
Beiträge: 151
WinXP
D 2009 Arc., Java, C
|
Verfasst: Do 13.08.09 13:23
@jaevencooler
du sagst:
"select * from BenutzerDerTabelleAngelegthat.TabelleABC
...
grant select on TabelleABC to NeuemBenutzer"
Korrektur: grant select on BenutzerDerTabelleAngelegthat.TabelleABC to NeuemBenutzer
dann geht es, danke dir und allen anderen, die versucht haben mir zu helfen.
Fragen nebenbei:
- was passiert, wenn ich den alten Benutzer aus der DB entferne? Bleiben die Tabellen bestehen? Oder ist der eine Art Admin, der dann nicht gelöscht werden kann?
|
|
iKilledKenny
      
Beiträge: 394
Erhaltene Danke: 8
Win XP
D5 Prof, C# Express 2005
|
Verfasst: Do 13.08.09 13:40
jaevencooler hat folgendes geschrieben : |
Das geht folgendermaßen:
select * from BenutzerDerTabelleAngelegthat.TabelleABC
dabei musst du dem neuen benutzer auch entsprechende rechte in dem anderen Schema granten
also etwa so:
grant select on TabelleABC to NeuemBenutzer
|
Damit hebelst du dann das Rollenkonzept komplett aus. Wenn man jedem Benutzer einen Grant auf eine Tabelle, und eine Anwendung hat in der Regel nicht nur eine, geben muss, ist das ja totaler Schwachsinn. Deshalb gibts ja das Rollenkonzept.
Also nochmal: Lass die Berechtigungsstruktur so wie sie ist, und setze dem Benutzer nach der Anmeldung an die Datenbank die Rolle.
|
|
|