Portál AbcLinuxu, 20. července 2025 11:16
zdravim pouzivam mysql a api pro c/c++ , mám následující dva dotazy:
1. umoznuje mysql dát nějakým zpusobem vědět, že v konkretni tabulce byl přidán nový záznam? vetsinou se to provadi ze se kontroluje obsah po nejakem timeoutu, ale právě tomu timeoutu bych se chtel vyhnout...lze to nějak?
2. magic_quotes jsou zalezitosti php nebo mysql ? tj.muzu je nastavovat ikdyz nepouzivam php ?
1. mno mozna jsme se nepochopili, ja pisi takoveho maleho daemona, ktery ma v pripade ze se objevi neco v databazi provest nejake definoane akce.....a nechci to resit stylem ze ten daemon bude kazdych 30s posilat "SELECT....", ale rad bych kdyby slo nejakym zpusobem osetrit aby ta database dala sama vedet ze pribyl novy zaznam......nejaky signal/preruseni nebo neco...
2. ten link jsem nejak nepobral....
"SELECT * FROM tabulka WHERE id = " . $_GET['id'] . " AND …"
. Ten vstup od uživatele se escapuje předem, bez ohledu na to, kde ho použiješ – když si ho vypíšeš na stránku, bude taky escapovaný… prostě je to špatný přístup. Řešením je neslepovat SQL z kousků textu, ale připravit si parametrizované dotazy/příkazy a parametry tam dosazovat (bindovat).1. dá sa to cez MySQL trigger - normálne si nakódiš (napr. v C/C++) funkciu, tú skompiluješ do .dll (alebo v linuxe do .so), nahráš ju medzi knižnice na MySQL serveri a v MySQL potom zadefinuješ trigger že pri vložení riadku sa má zavolať taká funkcia z tej dll-ky. Čo tá funkcia bude presne robiť, to už je len na Tebe - môže otvoriť rúru, socket, súbor, alebo aj ďalšie databázove spojenie na celkom inú databázu, niečo tam zapísať, poslať signál nejakému procesu, odblokovať semafor, poslať mail - čokoľvek.
2. jediné o čo by som sa zaujímal v súvislosti s magic_quotes je to, ako ich vypnúť.
jediné o čo by som sa zaujímal v súvislosti s magic_quotes je to, ako ich vypnúť.
+1
1. genialni napad, presne neco takoveho potrebuji, sice to bude trosku pracnejsi nez bych si pral, ale co uz....kdyby jste měl nejakou primitivni funkci jiz hotovou a nevadilo by vam ji sem vlozit byl bych vdecny...nikdy jsem s tim nedelal tak jen pro predstavu co je treba vsechno nadefinovat...
2. mno vzdyt o to mi taky jde.....jenze vetsinou se magic_quotes vypinaji v php.ini coz me privedlo na myslenku ze asi to nema nic spolecneho s mysqld
Bohužiaľ, pre MySQL som ešte vlastné funkcie nevytváral. Podľa manuálu by to malo byť možné a verím, že s trochou hľadania, čítania a experimentovania sa to podarí. Takou istou metódou (manuál+skúšanie) som dorábal jednu funkciu do PostreSQL - ale to je úplne iné API a asi Ti to moc nepomôže.
V prílohe je moja vlastná funkcia pre Postgres. Nie je to síce priamo funkcia pre trigger, ale ako demo snaď stačí. Z UTF-8 reťazca oseká diakritiku - potreboval som to na fulltextové hľadanie, aby to niečo našlo aj lenivcom, ktorí nepíšu "hacky carky".
ok diky, vyzkousim, prozkoumam....
mno tak jsem to zkousel, konkretne s tim posilanim signalu jinemu procesu, jenze funkce kill mi vraci chybu EPERM tudiz predpokladam ze jsem narazil na to ze funkce bezi pod uzivateleme "mysql" kdezto aplikace ktera ma signal prijmout pod uzivatelem "michal"...........nejaky hezky a jednoduchy napad jak to osetrit???
Co třeba fronta? U nich se dají nastavovat práva jako u souborů, takže bys povolil uživateli mysql zápis do fronty a michal by z ní četl.
a jde ta fronta otevrit tak, aby v pripade zapisu byla neblokujici a v pripade cteni byla blokujici ???
tak jsem si s tou frontou chvilku hral a mam dalsi dotaz. Jestlize chci aby z te fronty mohl cist POUZE uzivatel michal tak predpokladam ze ji musi zalozit on a nastavit prava zapisu pro skupinu a ostatni, jenze at se snazim jak chci tak funkce mq_open me ty prava ignoruje
mq_open(FRONTA, O_RDONLY | O_CREAT, S_IRUSR | S_IWUSR | S_IWGRP | S_IWOTH , &mqAtr);
a vysledek:
-rw------- 1 michal michal 80 2009-05-15 02:23 robot
opacny pripad kdy by frontu zalozil mysql se mi nezda nejlepsi pac by musel nastavit prava tak aby z ni mohl cist kdokoliv(coz je nezadouci) jestli se nepletu...
Neskúšal som, ale keby som sa do toho mal pustiť tak asi skúsim pomenované rúry - man fifo
Alebo keby som bol veľmi lenivý, tak aplikáciu čo má signál prijať by som cez sudo spustil tiež ako user mysql.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.