ugrás a tartalomhoz

User jogait lekérdező SQL parancs

.taltos · 2005. Már. 25. (P), 12.57
Szervusztok,

Azt szeretném kérdezni, hogy milyen SQL parancs szolgál arra, hogy lekérdezzem a saját jogaimat? Ezt úgy kell érteni, hogy meg kell tudnom, hogy az useremnek van -e LOCK jogosultsága, és ezért a phpMyAdmin-ban az SQL lekérdezés mezőben szeretném ezt elvégezni. Gondolom a központi táblákhoz legalább elérési jogom van, így az menni fog.

A másik, hogy esetleg az is előfordulhat, hogy nincsen LOCK oszlop a jogosultságok között. Ezt milyen SQL parancs kérdezi le?

Köszönöm!
 
1

Szia, hát ahogy látom

virág · 2005. Már. 25. (P), 13.40
Szia.

Ha magában a MySQL-ben akarod a jogosultságokat megnézni akkor először is neked kell minimum olvasási jogodnak lenni a "mysql" nevü adatbázishoz. Ezen belül vannak azok a táblák amikben többek közt a jogosultságok is tárolódnak. Főképpen az "user" tábla az érdekes, de pl. az adatbázis szintü hozzáférés a "db" táblában van állítva stb. De az "user" táblában mindenképpen szerepelni fog a felhasználó. Szóval ha a felhasználó csak a "proba" nevü adatbázist érheti el, akkor benne lesz az "user" táblában, de itt semmire nem lesz jogosult. Az ő jogai a "db" táblában vannak és csak a "proba" adatbázihoz lesz jogosultsága. Ha te rendszergazda vagy akkor egyszerü SELECT-el is le tudod ezeket kérdezni, hameg nincs rá jogod akkor sehogy. Jogosultságokat kezelni a GRANT, REVOKE utasitással tudsz vagy INSERT/UPDATE-val is esetleg:

Leirás:
http://dev.mysql.com/doc/mysql/en/grant.html

Nagyon röviden, nagyon leegyszerüsitve kb. igy néz ki a dólog. :)

Ja és a MySQL 5-ben már van CREATE USER, DROP USER, RENAME USER parancs is, de ez még élesben nem nagyon használatos sehol.
2

Köszönöm

.taltos · 2005. Már. 25. (P), 13.52
Igen, ezzel valamennyire (felületesen) tisztában voltam. Nekem igazából csak az a 1 vagy 2 select utasítás kellene, aminek eredményeként kidobja a mysql saját táblájáiból, hogy az én useremnek az én táblámra mik a jogosultságai.

Nem admin vagyok, hanem egyszerű user, csak felmerült egy probléma a LOCK jogosultsággal, és most azt szeretném megnézni, hogy van-e rá jogom.

Ha nem tudom lekérdezni azokat a táblákat, akkor mindegy (mármint ha nincs jogom látni őket), de ha igen, akkor onnan ki szeretném olvasni.

Magyarán 2 lekérdezésre lenne szükségem, amiből az ugyik azt mondja meg, hogy létezik-e LOCK oszlop, a másik pedig azt, hogy nekem erre van-e jogosultágom.
3

A "lock_tables_priv" oszlop

virág · 2005. Már. 25. (P), 14.01
A "lock_tables_priv" oszlop kellhet neked szerintem, ebben vagy "Y" vagy "N" van attól függően van-e jog rá vagy nincs.

http://dev.mysql.com/doc/mysql/en/privileges-provided.html

Itt le van irva melyik utasításhoz melyik oszlop tartozik, de szerintem ezeknek a lekérdezéséhez nem lesz jogosultságod.
4

Table szintű hozzáférés

Poetro · 2005. Már. 25. (P), 18.47
Tudtommal lehet a usernak table szintű hozzáférése is, és akkor megint más a helyzet.
Annak mondjuk nem néztem utána, hogy ilyenkor a user a db táblában benne van-e, vagy csak a table_priv táblában, de egy próbát megérne. Sőt a table_priv táblában oszlop szinten is lehet hozzáférést állítani.
Mondjuk a table szintű hozzáférés esetén nincs lehetőség lock beállítására, szóval az max a db vagy a user táblában található.
Mondjuk ha vmi programból csinálod a cuccot, akkor úgyis fog szólni, hogy nincs LOCK jogosultság, és akkor már meg is van a megfejtés.

USE mysql;
SELECT user.User, user.Lock_tables_priv user_lock, 
db.Lock_tables_priv db_lock, db 
FROM user LEFT JOIN db ON db.User = user.User;
... és mindenre fény derül.
--------
Poetro
5

Nem kerül bele a "db"

virág · 2005. Már. 25. (P), 18.57
Nem kerül bele a "db" táblába hacsak tábla szintü joga van csak a "table_priv"-be.

GRANT Select, Insert, Update, Delete, Index, Alter, Create, Drop, References ON proba.tablaneve TO 'felhasznalo'@'%'

Igy csak ott lesz benne és persze az "user" táblában. A többi meg sima SQL lekérdezéssel megoldható ahogy irtad is.
6

tables_priv-ben nincs lock

Poetro · 2005. Már. 25. (P), 19.06
Mivel nincs lock lehetőség a tables_priv táblában (4.0-ig legalábbis), akkor ez a kérdező szempontjából mind1 is.
--------
Poetro
7

LOCK

.taltos · 2005. Már. 25. (P), 21.14
Hibaüzenet fogadott, amikor a drupal a LOCK függvényt akarta használni, miszerint nincs ilyenre jogosultságom. (4.0.21)
Ekkor felhívtam a szolgáltatót, aki telefonálás közben ellenőrizte, hogy milyen jogaim vannak, és mondta, hogy minden létező jogosultság be van állítva.
Ezután Goba-val leveleztem, és Ő mondta, hogy lehetséges, hogy frissítették a rendszerüket, és közben elfelejthettek plusz oszlopot adni, ami ezt a LOCKot kezelné (azaz az adatbázist nem frissítették jól). Tegnap írtam nekik mailt (Goba levelének egy részének idézésével, hogy ne írjak neki hülyeségeket), de nem jött semmi válasz (még annyi sem, hogy vették). Ma írtam nekik mégegyet, hogy megkapták-e az előzőt, de így sem jött semmi.

Most nem tudom, hogy mi van, ezért gondoltam volna, hogy amire lehetőségem van, azt megnézné én, hogy tudjam nekik mondani, hogy EZ a hiba.

Szerkesztés:
Hát igen... az eredmény:
#1044 - Access denied for user: 'unidevsql@localhost' to database 'mysql'
8

még szerencse

Hojtsy Gábor · 2005. Már. 25. (P), 22.15
Jó, hogy nem garázdálkodhatsz mezei felhasználóként a jogok tábláiban :)
9

Nem kellene szolgáltatót

virág · 2005. Már. 25. (P), 22.21
Nem kellene szolgáltatót cserélni? Lehet kicsit elhamarkodott a kérdés, de nekem ilyeneken mindig felmegy a pumpám picit.
10

Váltani???

.taltos · 2005. Már. 25. (P), 22.55
Most váltottam rájuk olyan 1-2 hónapja (inkább 1).

Én remélem, hogy meg tudjuk beszélni a dolgokat, és nem lesz belőle elmérgülés.
(egy kis off: ha nagyon nem sikerülne a dolog, akkor emiatt mondhatom, hogy váltani akarok, vagy nem? Ez egy sztenderd szolgáltatás, vagy valami extra?)
11

Hát szerintem bármikor

virág · 2005. Már. 25. (P), 23.41
Hát szerintem bármikor válthatsz ehhez senkinek semmi köze, de én főleg arra gondoltam, hogy nem válaszolnak 2 levélre sem, abban amit szeretnél én semmi extrát nem látok.