GRANT SELECT

Tematy

biblia


Kamil Paszkiewicz wrote:

Witam.

Mam taki problem.
Dodałem usera i hasło
insert into user (user,password) values ('nazwa',password('hasło'))

I to hasło nie działa, tzn. loguję sie na hasło puste.

O co chodzi ?


Lepiej dodawac userow klauzula GRANT:
GRANT SELECT ON baza.tablica TO user@serwer IDENTIFIED BY 'haslo';

Pozdr.



Witam.

Tworzę rolę:

create role read_only
NOT IDENTIFIED;

grant select any table to read_only;

ale nie chcę żeby było "... select any table...",  ale żeby był select dla
wszystkich tabel tylko tego konkretnego użytkownika. Jak to zrobić? (grant
select * table to read_only, grant select all table to read_only nie działa)



Witam Grupowiczow
Zrobilem tak:
exec sp_grant_login 'konto NT'
use 'bazadanych'
exec sp_grantdbaccess 'konto NT', 'uztytkownikbazy'

grant select on tabela to 'uztytkownikbazy'
grant exec on procedura to 'uztytkownikbazy'

I wynik jest taki:
selekta moge zrobic (ok), procedury nie moge wykonac (twierdzi ze nie moze
takiej znalezc).
Zmienilem nawet ownera na 'uztytkownikbazy' i efekt jest ten sam.

Gdzie popelniam blad?



moze da sie podrasowac bazke bo przy tabeli 100.000 rekordów
troche sie tnie przy przeszukiwaniu (delphi) .

Oczywiście - nie baza jest winna tylko program -nie Delphi tylko
programista; IMHO to jest po prostu nieefektywnie napisane.

3.czy istnieje odpowiednik LIMIT mysqla dla firebirda? lub jak ograniczyc
ilosc
zwracanych rewkordów ?


select first 25 * from tabela

4.GRANT SELECT ON RDB$ROLES TO PUBLIC;
  mam taki błąd 'no S privilege with grant option on table/view RDB$ROLES'


?
Po pierwsze po co to robić?
Po drugie, takie coś jest poprawne... może problem tkwi gdzi indziej?

---
wloochacz
PS. A jaki to Firebird? Bo oczywiście miałem na myśli wersję 1.5.1



work wrote:
Chce aby tylko jeden użytkownik (user1) mógł wykonywać tylko to jedno
zapytanie.Miał prawa tylko do wykonania tego zapytania.

SELECT owner FROM sys.all_tables WHERE table_name = 'Tabela1'.

Robie:

GRANT SELECT
    ON  SYS.ALL_TABLES TO user1

i nie zwraca mi żadnych wierszy. Dopiero gdy dodam
GRANT SELECT ANY TABLE TO user1
to działa.

No ale wtedy user1 ma dostep do wszystkich tabel w bazie. Jak zrobić aby
miał dostep tylko do widoku sys.all_tables ???

Zapewne wynika to z samych warunków w widoku all_tables. Tak czy owak nie
tędy droga - skoro chcesz mu dać prawo wykonywania dokładnie jednego
zapytania, to do tego służą właśnie widoki - stwórz odpowiedni widok jako
użytkownik, który może czytać odpowiednie rekordy z all_tables i daj user1
prawo do czytania tylko i wyłącznie tego widoku. W ten sposób będzie zawsze
dostawał tylko to, co powinien.



work wrote:
No ok. Prztestowałem sobie widok.
Stworzyłem widok. dałem uprawnienia do tego widoku. wykonalem zapytanie i
nic nie zwraca.

Bo ALL_TABLES z definicji zwraca tylko to, do czego masz prawa - musisz użyć
DBA_TABLES:

Jako SYS:

grant select on dba_tables to system with grant option;

Jako SYSTEM:

create view foo_tables as select owner from dba_tables where
table_name='FOO';

grant select on foo_tables to user1;

Jako USER1 (żeby pokazać, że działa):

SQLselect * from system.foo_tables;

OWNER
---------------------------------------------------
USER3
USER2
USER1

Jako USER1 (żeby pokazać, że z ALL_TABLES dostaje mniej):

SQLselect owner from all_tables where table_name = 'FOO';

OWNER
---------------------------------------------------
USER1

Jako USER1 (żeby pokazać, że USER1 nie ma dostępu do DBA_TABLES):

SQLselect * from dba_tables;
select * from dba_tables
              *
ERROR at line 1:
ORA-00942: table or view does not exist



hubert depesz lubaczewski napisał(a):

hej,
takie pytanie do tych z was którzy kiedyś słuchali kandydatów.
o co pytacie?


Ja nie pytałem nigdy, ale mam pewną opinie na ten temat. Wszystko zależy
też czy ta osoba ma być biegła w bazach danych czy też rokować nadzieje.

W tym drugim przypadku ważne jest to by taka osoba interesowała się
programowaniem, było to jej hobby w pewnym sensie, a nie jakiś studencik
z papierkiem i małe zainteresowanie tematyką ;)

Moich kilka pytań :
- zaproponować strukturę bazy danych, która przydatna byłaby w pizzeri ;]

- co to jest widok ? czy na widoku mogę przeprowadzić operacje INSERT,
UPDATE, DELETE lub SELECT ?

- do czego służy GRANT ?

- posiadasz następująca strukturę bazy danych :
dokumenty ( dokument_id, tytul )
komentarze ( komentarz_id, dokument_id, autor )
Ułóż zapytanie, które zwróci listę dokumentów wraz z liczbą komentarzy (
  przedstaw dwie wersje bez podzapytania i z podzapytaniem ).

- co to jest trigger? napisz triggera, który automatycznie będzie
aktualizował ilość komentarzy w tabeli dokumenty



witam - mam maly problemik z mysql
chce sobie odpalic "lock tables x WRITE";
i nie dziala, tylko jako blad wyskakuje
"select command denied to user: '@192.168.0.2' for table 'x'"
a tak sie sklada, ze wszystkie prawa do calej bazy w ktorej jest x sa dane
botowi (grant all privileges on bot /*tak sie nazywa baza*/ to 'bot@%')
zeby strzelac locka to trzeba jakies specjalne prawda jeszcze dawac? (jak sie
zaloguje na roota, to dziala OK)
-oczywiscie insert, select itp dziala OK... tylko z lock jest problem
blagam - pomocy



leming nine <l@yt.ng.plschrieb in im Newsbeitrag:
93nmtr$37@flis.man.torun.pl...

Witam. Mam problem z prawidłowym "zaprogramowaniem"
bazy danych PostgreSQL 7, żeby przed wstawieniem
odpowiedniego rekordu do tabeli sprawdzał, czy w innej
tabeli istnieje w danej kolumnie dana informacja, i tylko
jeśli owa informacja istnieje, rekord zostanie dodany.
W odwrotnym przypadku wyskakuje informacja o błędzie,
i koniec, kropka.

Więcej szczegółów? -- Proszę, oto one:

create table people (
    uid serial,
    username name not null,
    passwd name not null
);
create table permissions (
    author int not null,
    permission name not null
);
create unique index permissions_key
    on permissions (author, permission);
grant select, insert, update, delete
    on people, permissions to www_data;

Chcę, żeby w momencie dodania rekordu:

insert into permissions (author, permission)
    values (
        '555',
        'text'
    );

było sprawdzane, czy w tabeli people istnieje
taki uid, jak '555', i jeśli nie, to powinien zostać
zakomunikowany błąd.

Pytanie: jak to zrobić? Trigger to, czy może
Rule? Gdzie są jakieś dobre przykłady robienia
takich kombinacji alpejskich?

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • wpserwis.htw.pl
  • Powered by MyScript