bastian-w
Goto Top

Rechtevergabe MSSQL?

Hallo zusammen,

ich möchte einem User auf eine MSSQL DB Leserechte geben, so das eine externe nicht auf dem Server laufende Application auf die SQL Daten zugreifen kann. Leider kenne ich mich mit MSSQL nicht aus. Funktioniert das so ähnlich wie bei mySQL?

Sowas in der Art:
GRANT SELECT ON db1.* TO username IDENTIFIED BY "password"

oder muss ich das unter Windows "zusammenclicken"?

Content-ID: 37780

Url: https://administrator.de/contentid/37780

Ausgedruckt am: 22.11.2024 um 03:11 Uhr

nomax
nomax 11.08.2006 um 07:27:20 Uhr
Goto Top
hi,

welche version von MS SQL benutzt du?

du musst lediglich nur den Enterprise-Manager starten, den Server und die Datenbank auswählen.
unter ROLES kannst du versch profile für user o gruppen festlegen.
zb db_owner ist der datenbankbesitzer und darf alles. nur lese-rechte besitzt db_datareader.

probier einfach ein bisschen, was du genau brauchst.

du kannst auch unter Users benutzer und gruppen hinzufügen. diesen kannst du dann spezielle rechte vergeben (unter properties), dh auf tabellen, views oder prozeduren
Biber
Biber 11.08.2006 um 09:06:25 Uhr
Goto Top
Moin Bastian_W,

die Rechtevergabe ist genauso wie Du oben vermutet hast bei allen SQL-Dantenbanken (so gut wie) identisch.
Entsprechend wäre auch bei MSSQL x.yy theoretisch alees aus dieser Syntax möglich:
GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ...
    ON {tbl_name | * | *.* | db_name.*}
    TO user [IDENTIFIED BY [PASSWORD] 'password']  
        [, user [IDENTIFIED BY [PASSWORD] 'password']] ...  
    [REQUIRE
        NONE |
        [{SSL| X509}]
        [CIPHER 'cipher' [AND]]  
        [ISSUER 'issuer' [AND]]  
        [SUBJECT 'subject']]  
    [WITH with_option [with_option] ...]

with_option =
    GRANT OPTION
  | MAX_QUERIES_PER_HOUR count
  | MAX_UPDATES_PER_HOUR count
  | MAX_CONNECTIONS_PER_HOUR count
[Quelle: http://dev.mysql.com/doc/refman/4.1/en/grant.html Grant Syntax]

In der Theorie.
In der Praxis wird aber jeder DB-Admin die Rechtevergabe
1) auf Tabellenebene festlegen, nicht auf Datenbankebene
2) es reduzieren auf die Rechte SELECT/INSERT/UPDATE/DELETE und natürlich dann auch auf Floskeln wie "IDENTIFIED by "whatever" verzichten... ist ja nicht pflegbar.
3) je nach Datenbank zusätzlich noch festlegen, dass dieser User überhaupt das Recht zum CONNECT mit der Datenbank hat.

Auch wenn, wie nomax richtigerweise geschrieben hat, natürlich ein Zusammenklicken der Rechte über irgendeine GUI möglich ist, würde ich (ebenso wie bei DDL-Skripten zur DB-Anpassung) auch bei der GRANTerei immer den Weg über Statements gehen.
Zur Dokumentierbarkeit und Reprozierbarkeit.

Gruß
Biber
Bastian-W
Bastian-W 11.08.2006 um 13:07:27 Uhr
Goto Top
Ich habe das nun mal über Windows "zusammengeklickt" bekomme aber die FM:

not associated with a trusted sql server connection

wenn ich von dem Remove Server versuche eine ODBC (SQL) Connection einzurichten.
Die Microsoft Webseite -> "http://support.microsoft.com/kb/889615/en-us" bringt mich allerdings nicht weiter. Der Benutzraccound hat userrechte den ich verwende.

Ach, der Server ist ein SQL 2000 Server.

Jemand eine Idee?