Fórum Root.cz

Hlavní témata => Server => Téma založeno: thcom 13. 12. 2016, 13:23:25

Název: MariaDB a práva k uložené proceduře
Přispěvatel: thcom 13. 12. 2016, 13:23:25
ahoj, objevil jsem kouzlo StoredProc :)
zkousim jednu vytvorit a funguje to, ale narazil jsem na problem s opravnenim

ma uzivatele kasa, kteremu k databazi pokladna pridelim prava Procedura    Execute
delam to v nastroji adminer

sp ovsem nelze spustit, kdyz ale pridelim prava primo k te dane sp pomoci tabulky procs_priv
tak to slape,

mel jsem za to, ze prava v MySQL funguji tak, ze pokud pridelim uzivateli napr prava Tabulka - Select
a neomezim to v tabulce mysql.db na konkretni databazi, tak to plati pro vsechny database

tak mi to i funguje, ale u sp je to jinak ?

dekuji za pripadne rady

TH
Název: Re:mariaDB a prava k UlozeneProcedure
Přispěvatel: to_je_jedno 13. 12. 2016, 13:36:52
zkus dukladne zvazit postgresql...
Název: Re:MariaDB a práva k uložené proceduře
Přispěvatel: thcom 13. 12. 2016, 14:04:12
Díky,  ale aktuálně asi nemám prostor migrovst celý projekt,  ještě zvážim perconu

Teď jsem si vygooglil,  že mám zkusit změnit DEFINER u té sp

Název: Re:MariaDB a práva k uložené proceduře
Přispěvatel: Pavel Stěhule 13. 12. 2016, 17:37:52
ahoj, objevil jsem kouzlo StoredProc :)
zkousim jednu vytvorit a funguje to, ale narazil jsem na problem s opravnenim

ma uzivatele kasa, kteremu k databazi pokladna pridelim prava Procedura    Execute
delam to v nastroji adminer

sp ovsem nelze spustit, kdyz ale pridelim prava primo k te dane sp pomoci tabulky procs_priv
tak to slape,

mel jsem za to, ze prava v MySQL funguji tak, ze pokud pridelim uzivateli napr prava Tabulka - Select
a neomezim to v tabulce mysql.db na konkretni databazi, tak to plati pro vsechny database

tak mi to i funguje, ale u sp je to jinak ?

dekuji za pripadne rady

TH

u SP je to jinak - tady MySQL drží basu se zbytkem a v Postgresu je svébytný.

Uvnitř uložené procedury v MySQL běžíte (bydef) s právy vlastníka procedury (kdo tu proceduru vytvořil).  Proto se ještě typicky nastavují práva na spuštění procedury.

V Postgresu je to přesně opačně - defaultně běží s právy volajícího - tudíž se tam typicky nenastavují pak práva na proceduru, jelikož se běžně nemění identita.
Název: Re:MariaDB a práva k uložené proceduře
Přispěvatel: Pavel Stěhule 13. 12. 2016, 17:39:33
Díky,  ale aktuálně asi nemám prostor migrovst celý projekt,  ještě zvážim perconu

Percona je drobet opatchovaný MySQL - v tomto ohledu se bude chovat úplně stejně.
Název: Re:MariaDB a práva k uložené proceduře
Přispěvatel: thcom 13. 12. 2016, 18:22:56
tak jsem ze zoufalstvi nainstaloval ten postgress, nejsem schopny se ani pripojit pres adminer :(
nevali se nekde nejaky navod pro uzivatele MySQL ?

dikec TH
Název: Re:MariaDB a práva k uložené proceduře
Přispěvatel: javaman () 13. 12. 2016, 18:37:21
ROFL
Název: Re:MariaDB a práva k uložené proceduře
Přispěvatel: Pavel Stěhule 14. 12. 2016, 14:28:19
tak jsem ze zoufalstvi nainstaloval ten postgress, nejsem schopny se ani pripojit pres adminer :(
nevali se nekde nejaky navod pro uzivatele MySQL ?

dikec TH
http://postgres.cz/wiki/P%C5%99echod_z_MySQL
Název: Re:MariaDB a práva k uložené proceduře
Přispěvatel: thcom 14. 12. 2016, 15:11:02
diky moc, uz to lustim, ten navod

http://postgres.cz/wiki/P%C5%99echod_z_MySQL
 (http://postgres.cz/wiki/P%C5%99echod_z_MySQL)

jeste me trapi poddotaz, v mysql se to jmenuje Event, jak se to jmenuje v PG ?


a stim souvisejici
da se nejak u toho eventu nastavit, aby se nespustil 2x, tzn trba kdyz ho budu poustet kazdou sekundu ale trval by treba nahodou 3 sec

nebo mam na zacatku nastavit v DB nejaky flag a na konci ho shodit, resi se to takto ?

dekuji moc TH



Název: Re:MariaDB a práva k uložené proceduře
Přispěvatel: Pavel Stěhule 15. 12. 2016, 08:08:41
diky moc, uz to lustim, ten navod

http://postgres.cz/wiki/P%C5%99echod_z_MySQL
 (http://postgres.cz/wiki/P%C5%99echod_z_MySQL)

jeste me trapi poddotaz, v mysql se to jmenuje Event, jak se to jmenuje v PG ?


a stim souvisejici
da se nejak u toho eventu nastavit, aby se nespustil 2x, tzn trba kdyz ho budu poustet kazdou sekundu ale trval by treba nahodou 3 sec

nebo mam na zacatku nastavit v DB nejaky flag a na konci ho shodit, resi se to takto ?

dekuji moc TH
cron ma minutovou granularitu - pokud potřebujete větší četnost, tak to už je o použití extenzí - pro zabránění opakovaného nechtěného spuštění se používají  Advisory Locks - https://www.postgresql.org/docs/current/static/explicit-locking.html