[ igor.vitorac @ 17.12.2013. 09:21 ] @
Kreirao sam MySQL user-a sa minimalnim permisijama za potrebe reporting portala tj. samo select permission:
grant select on myDB.* to 'bi'@'myhost.example.com'

Javlja se potreba da "bi" user izvrsava stored procedure koje treba da kreiraju/drop-uju temporary tabele, preciznije:
- kreira nekoliko temp tabela na bazi select-a
- kreira finalni query (select)
- drop-uje temp tabele


MySQL dokumentacija kaze:
Citat:
The CREATE TEMPORARY TABLES privilege enables the creation of temporary tables using the CREATE TEMPORARY TABLE statement.
However, other operations on a temporary table, such as INSERT, UPDATE, or SELECT, require additional privileges for those operations for the database containing the temporary table, or for the nontemporary table of the same name.
To keep privileges for temporary and nontemporary tables separate, a common workaround for this situation is to create a database dedicated to the use of temporary tables. Then for that database, a user can be granted the CREATE TEMPORARY TABLES privilege, along with any other privileges required for temporary table operations done by that user.


1. Kakvi su vasi saveti/iskustva?
2. Da li kreiranje dodatne baze za potrebe temporary tabela za potrebe reportova ima nekih drugih mana?
3. Da li se gore pomenuti scenario moze podesiti na jednoj bazi ali tako da permisije tipa insert, update, delete, drop vaze samo za temporary tabele?

U pitanju je mysql-5.1.69 na RHEL 6.4

Unapred hvala,
Igor
[ bogdan.kecman @ 18.12.2013. 04:06 ] @
mozda, samo mozda, slucajno moze da se desi, da ovo proradi ok u 5.7 da malo vecom sansom da proradi ok u 5.8 .. ovakav retardirani set limita je ostatak montijevih frm fajlova i cele myisam price tako da dok se to ne pocisti nema nista od normalnog role sistema permissiona ...

generalno je to problem koji je kvalitetno neresiv a postoje workaround-i da se nabudzi nekakvo resenje

dakle fora je da ti napravis

grant all on `retardiranaPraznaBaza`.* to 'reporter'@'localhost';
grant select on `normalnaBaza`.* to 'reporter'@'localhost';

i onda se reporter kaci na mysql@retardiranaPraznaBaza i radi nesto tipa

create temporary table x ...
create temporary table y ...
insert into x select ... from `normalnaBaza`.t1 join `normalnaBaza`.t2 ...
insert into y select ... from `normalnaBaza`.t5 join `normalnaBaza`.t99 ...
select .. from x,y..
drop table x;
drop table y;

tako da na toj "retardiranabaza" ima sve privilegije i tu kao nema sta da "osteti" a na "normalna baza" ima pravo za select

TO RADI!!! dakle to koriste ljudi a dosta mesta i sljaka to ok .. problem je sto je ruzno do zla boga .. ali sljaka ok


Citat:
igor.vitorac
2. Da li kreiranje dodatne baze za potrebe temporary tabela za potrebe reportova ima nekih drugih mana?


jok, samo je ruzno i generalno sramota da rdbms koji je ovoliko duga na marketu to i dalje radi na ovaj nacin

Citat:
igor.vitorac:
3. Da li se gore pomenuti scenario moze podesiti na jednoj bazi ali tako da permisije tipa insert, update, delete, drop vaze samo za temporary tabele?


jok, u teoriji bi ti mogao da kazes

grant all on `retardiranaPraznaBaza`.ttt_* to 'reporter'@'localhost';

i onda da radis create temporary table ttt_nesto .. ali to ne radi kako treba
[ igor.vitorac @ 14.04.2014. 10:28 ] @
Hvala na pomoci. Na kraju smo i uradili sa dedicated bazom za temporary tabele.

Igor