Trigger dan Firebird veri tabanı kullanıcısı ekleme silme ve gücelleme
#1
Merhaba, Veri tabanı programcılığında önemli olan olaylardan biri olan loglama konusunda firebird un diğer dblere göre bazı zorlukları vardır. Gerçi bu eksiklikler için hep alternatif çözümler sundukları için çok fazla sorun olmuyor. Bunun en başında kullancı işlemleri gelmekteyti. Neyseki Firebird 2.5 versiyonu ile bu konuyada ufak bir çözüm geldi. Şu anda en azından sql ile veri tabanı kullanıcı ekleme güncelleme ve silme yapabiliyorsunuz. Fakat ufaka bir sorun var. Bu kullanıcıları db gride listelemek filan isterseniz önce küçük bir deve yavrusu bulup hendek atlatma tecrubesi kazanmanız gerekiyor. Aslında 1-10 kullanıcı ya kadar zaten önemli değil. Fakat kullanıcı sayınız 20 ise siz yetkilendirmeyi veri tabanı bazlı yapmak zorundasınız aksi taktirde bilgi güvenlini tam sağlayamasınız. Ardı arkası kesilmeyen bug lar la hangi veriyi kimin ne yaptığını anlayamazsınız. Sql yazmanızda oldukça zor olur. Bir düşünün kendiniz users diye bir tablo açtınız log tutcaksınız sql de log.user = tableuser.username deseniz bile tam istediğiniz sonuç gelmeyebilir. halbuki log.user = current_user ile işi çözebilirsiniz. Ayrıca veri tabanı role lerini kullanarak tabloda silme, eğiştirme yetkilendirmesi koymanız en garanti olanı olacaktır. Bu şekilde kullanacağınız db ler sizin başlangıç seviyesi sql progamcılığından orta seviye sql programcılığına doğru atacağınız büyük bir adım olacaktır. Eğer programcılığı severEk yapıyorsanız sizde bu işlevlerin kendiliğinden yapıldığını gördükçe çok zevk alacaksınız.
Şimdi anlatacağım yöntem deveye hendek atlatmak yerine hdeğin üzerinde bir köprü kurup deveyi onun üzerinden geçirme operasyonu olacak. Çünkü Bu hendeğin kapanması Firebird 3.0 la mümkün gibi gözüküyor.
Yapılacak işlemler
1) User tablosu hazırlanacak
2) User tablosuna 3 ayrı trigger eklenecek (insert,update,delete)
3) Bu trigerlara veri tabanına kullanıcı eklendiği firebird e kullancı ekliyen,
Kullanıcı silindiği zaman kullanıcı silen,
Kullancı paralasını güncellediği zaman paraolayı güncelliyen.

Burada dikkat edilemsi gereken önemli üç not mevcut
Her kullanıc kendi kullanıcı adını, ad ve soyad bilgisini ve şifresini günelleyebilir
Kullanıcı ekleme silme işlemleri sadece SYSDBA yetkisindeki kullanılar yapabilir.
Eklene kullancıya role atamasanız hiç bir işe yaramaz. sadece db ye bağlanır.

firebird is not a supported langage
List of available langages :
php, smarty, cuesheet, div, q, mapbasic, gambas, cfdg, netrexx, css, freeswitch, z80, java5, sparql, falcon, asymptote, dot, mxml, plsql, fsharp, dcpu16, vala, basic4gl, qbasic, clojure, oobas, powershell, rails, diff, pli, freebasic, sas, stonescript, scheme, latex, f1, pascal, 6502kickass, bnf, llvm, klonecpp, povray, applescript, python, coffeescript, progress, html4strict, postgresql, lua, newlisp, lisp, unicon, cadlisp, asm, vba, oxygene, modula2, urbi, go, gnuplot, m68k, vbnet, euphoria, spark, xorg_conf, properties, lolcode, oberon2, xbasic, avisynth, yaml, vhdl, cpp, logtalk, powerbuilder, gml, perl, icon, sdlbasic, fo, ocaml-brief, mmix, providex, pic16, klonec, abap, gwbasic, nagios, pike, genero, purebasic, zxbasic, haxe, lotusformulas, awk, visualfoxpro, cobol, pcre, ocaml, apt_sources, chaiscript, autoconf, j, intercal, 68000devpac, xml, asp, lotusscript, bascomavr, genie, tcl, prolog, upc, rebol, octave, nsis, groovy, cil, mirc, smalltalk, oracle11, pycon, mpasm, dos, rsplus, c, locobasic, ini, bash, d, javascript, vedit, magiksf, thinbasic, lb, parasail, proftpd, whitespace, oz, whois, teraterm, 4cs, actionscript, csharp, apache, make, objc, boo, fortran, delphi, oorexx, idl, ecmascript, visualprolog, algol68, verilog, html5, caddcl, haskell, uscript, blitzbasic, rpmspec, java, rexx, scilab, bibtex, ldif, inno, c_loadrunner, hq9plus, perl6, erlang, gdb, kixtart, vim, oracle8, reg, dcs, typoscript, per, hicest, objeck, eiffel, mysql, actionscript3, parigp, pys60, 6502acme, lscript, epc, gettext, scala, tsql, lsl2, matlab, autoit, pf, xpp, robots, ruby, cmake, ada, systemverilog, winbatch, c_mac, jquery, text, e, io, php-brief, pixelbender, modula3, glsl, autohotkey, email, cfm, bf, sql, 6502tasm, arm, dcl, cpp-qt

firebird is not a supported langage
List of available langages :
php, smarty, cuesheet, div, q, mapbasic, gambas, cfdg, netrexx, css, freeswitch, z80, java5, sparql, falcon, asymptote, dot, mxml, plsql, fsharp, dcpu16, vala, basic4gl, qbasic, clojure, oobas, powershell, rails, diff, pli, freebasic, sas, stonescript, scheme, latex, f1, pascal, 6502kickass, bnf, llvm, klonecpp, povray, applescript, python, coffeescript, progress, html4strict, postgresql, lua, newlisp, lisp, unicon, cadlisp, asm, vba, oxygene, modula2, urbi, go, gnuplot, m68k, vbnet, euphoria, spark, xorg_conf, properties, lolcode, oberon2, xbasic, avisynth, yaml, vhdl, cpp, logtalk, powerbuilder, gml, perl, icon, sdlbasic, fo, ocaml-brief, mmix, providex, pic16, klonec, abap, gwbasic, nagios, pike, genero, purebasic, zxbasic, haxe, lotusformulas, awk, visualfoxpro, cobol, pcre, ocaml, apt_sources, chaiscript, autoconf, j, intercal, 68000devpac, xml, asp, lotusscript, bascomavr, genie, tcl, prolog, upc, rebol, octave, nsis, groovy, cil, mirc, smalltalk, oracle11, pycon, mpasm, dos, rsplus, c, locobasic, ini, bash, d, javascript, vedit, magiksf, thinbasic, lb, parasail, proftpd, whitespace, oz, whois, teraterm, 4cs, actionscript, csharp, apache, make, objc, boo, fortran, delphi, oorexx, idl, ecmascript, visualprolog, algol68, verilog, html5, caddcl, haskell, uscript, blitzbasic, rpmspec, java, rexx, scilab, bibtex, ldif, inno, c_loadrunner, hq9plus, perl6, erlang, gdb, kixtart, vim, oracle8, reg, dcs, typoscript, per, hicest, objeck, eiffel, mysql, actionscript3, parigp, pys60, 6502acme, lscript, epc, gettext, scala, tsql, lsl2, matlab, autoit, pf, xpp, robots, ruby, cmake, ada, systemverilog, winbatch, c_mac, jquery, text, e, io, php-brief, pixelbender, modula3, glsl, autohotkey, email, cfm, bf, sql, 6502tasm, arm, dcl, cpp-qt

firebird is not a supported langage
List of available langages :
php, smarty, cuesheet, div, q, mapbasic, gambas, cfdg, netrexx, css, freeswitch, z80, java5, sparql, falcon, asymptote, dot, mxml, plsql, fsharp, dcpu16, vala, basic4gl, qbasic, clojure, oobas, powershell, rails, diff, pli, freebasic, sas, stonescript, scheme, latex, f1, pascal, 6502kickass, bnf, llvm, klonecpp, povray, applescript, python, coffeescript, progress, html4strict, postgresql, lua, newlisp, lisp, unicon, cadlisp, asm, vba, oxygene, modula2, urbi, go, gnuplot, m68k, vbnet, euphoria, spark, xorg_conf, properties, lolcode, oberon2, xbasic, avisynth, yaml, vhdl, cpp, logtalk, powerbuilder, gml, perl, icon, sdlbasic, fo, ocaml-brief, mmix, providex, pic16, klonec, abap, gwbasic, nagios, pike, genero, purebasic, zxbasic, haxe, lotusformulas, awk, visualfoxpro, cobol, pcre, ocaml, apt_sources, chaiscript, autoconf, j, intercal, 68000devpac, xml, asp, lotusscript, bascomavr, genie, tcl, prolog, upc, rebol, octave, nsis, groovy, cil, mirc, smalltalk, oracle11, pycon, mpasm, dos, rsplus, c, locobasic, ini, bash, d, javascript, vedit, magiksf, thinbasic, lb, parasail, proftpd, whitespace, oz, whois, teraterm, 4cs, actionscript, csharp, apache, make, objc, boo, fortran, delphi, oorexx, idl, ecmascript, visualprolog, algol68, verilog, html5, caddcl, haskell, uscript, blitzbasic, rpmspec, java, rexx, scilab, bibtex, ldif, inno, c_loadrunner, hq9plus, perl6, erlang, gdb, kixtart, vim, oracle8, reg, dcs, typoscript, per, hicest, objeck, eiffel, mysql, actionscript3, parigp, pys60, 6502acme, lscript, epc, gettext, scala, tsql, lsl2, matlab, autoit, pf, xpp, robots, ruby, cmake, ada, systemverilog, winbatch, c_mac, jquery, text, e, io, php-brief, pixelbender, modula3, glsl, autohotkey, email, cfm, bf, sql, 6502tasm, arm, dcl, cpp-qt

firebird is not a supported langage
List of available langages :
php, smarty, cuesheet, div, q, mapbasic, gambas, cfdg, netrexx, css, freeswitch, z80, java5, sparql, falcon, asymptote, dot, mxml, plsql, fsharp, dcpu16, vala, basic4gl, qbasic, clojure, oobas, powershell, rails, diff, pli, freebasic, sas, stonescript, scheme, latex, f1, pascal, 6502kickass, bnf, llvm, klonecpp, povray, applescript, python, coffeescript, progress, html4strict, postgresql, lua, newlisp, lisp, unicon, cadlisp, asm, vba, oxygene, modula2, urbi, go, gnuplot, m68k, vbnet, euphoria, spark, xorg_conf, properties, lolcode, oberon2, xbasic, avisynth, yaml, vhdl, cpp, logtalk, powerbuilder, gml, perl, icon, sdlbasic, fo, ocaml-brief, mmix, providex, pic16, klonec, abap, gwbasic, nagios, pike, genero, purebasic, zxbasic, haxe, lotusformulas, awk, visualfoxpro, cobol, pcre, ocaml, apt_sources, chaiscript, autoconf, j, intercal, 68000devpac, xml, asp, lotusscript, bascomavr, genie, tcl, prolog, upc, rebol, octave, nsis, groovy, cil, mirc, smalltalk, oracle11, pycon, mpasm, dos, rsplus, c, locobasic, ini, bash, d, javascript, vedit, magiksf, thinbasic, lb, parasail, proftpd, whitespace, oz, whois, teraterm, 4cs, actionscript, csharp, apache, make, objc, boo, fortran, delphi, oorexx, idl, ecmascript, visualprolog, algol68, verilog, html5, caddcl, haskell, uscript, blitzbasic, rpmspec, java, rexx, scilab, bibtex, ldif, inno, c_loadrunner, hq9plus, perl6, erlang, gdb, kixtart, vim, oracle8, reg, dcs, typoscript, per, hicest, objeck, eiffel, mysql, actionscript3, parigp, pys60, 6502acme, lscript, epc, gettext, scala, tsql, lsl2, matlab, autoit, pf, xpp, robots, ruby, cmake, ada, systemverilog, winbatch, c_mac, jquery, text, e, io, php-brief, pixelbender, modula3, glsl, autohotkey, email, cfm, bf, sql, 6502tasm, arm, dcl, cpp-qt



  Alıntı
Bu mesajı beğenenler:
#2
Çekirdeği 1980' e dayanan, yeni jenerasyon adı Firebird hakkında birkaç mahalle takımının projesi intibası uyandıran bir açıklama biraz ayıp oluyor. Smile

- Diğer DB lerde nasılmış ki? Firebird'de "log" lama fazladan iki sorti olsun...
- GSEC tool u ile çok mu zormuş ki? SQL user management i eklemeyi zaruret görmüşler... rdb$admin ve auto_mapping konularını inceleyiniz...
- İsterse binlerce olsun, kullanıcıları listelemek 2-3 satırlık SQL cümlesi... "MON$" ile başlayan monitoring tabloların içeriklerini tekrar gözden geçirin isterseniz.... Kimin ne statement yürüttüğünü görebilir; admin veya dbo iseniz bıçak gibi connectionunu bile kesebilirsiniz... Smile
- Firebird'ün eksikleri de olabilir pektabii... Bunlar saydığınız eksiklikler değil...




  Alıntı
Bu mesajı beğenenler:
#3

Alıntı: - Diğer DB lerde nasılmış ki? Firebird'de "log" lama fazladan iki sorti olsun...

Hocam konu ile ilgili yazılanlarda yanlış anlaşılma var. Firebirdin yapamadığı kısım monitoring değil kullanıcı yönetimi.

(10-01-2012, 13:11)Zeki Gürsoy demiş ki: Çekirdeği 1980' e dayanan, yeni jenerasyon adı Firebird hakkında birkaç mahalle takımının projesi intibası uyandıran bir açıklama biraz ayıp oluyor. Smile
Firebirde mahalle takımı muamelesi yapsam o takımda kendim oynamam. Çekirdek değil 1980 isterse taş devrinden itibaren gelişmeye başlasa benim için fark etmez bazı şeyleri yapamıyorsunuz.

Alıntı: - İsterse binlerce olsun, kullanıcıları listelemek 2-3 satırlık SQL cümlesi...

Firebird de databese kullancılarını listeleyen 2-3 satırlık kodu gönderirseniz çok makbule geçer. ben aradım bulamadım.



  Alıntı
Bu mesajı beğenenler:
#4
Tekrar merhaba;

Kullanıcıları listelemek:

firebird is not a supported langage
List of available langages :
php, smarty, cuesheet, div, q, mapbasic, gambas, cfdg, netrexx, css, freeswitch, z80, java5, sparql, falcon, asymptote, dot, mxml, plsql, fsharp, dcpu16, vala, basic4gl, qbasic, clojure, oobas, powershell, rails, diff, pli, freebasic, sas, stonescript, scheme, latex, f1, pascal, 6502kickass, bnf, llvm, klonecpp, povray, applescript, python, coffeescript, progress, html4strict, postgresql, lua, newlisp, lisp, unicon, cadlisp, asm, vba, oxygene, modula2, urbi, go, gnuplot, m68k, vbnet, euphoria, spark, xorg_conf, properties, lolcode, oberon2, xbasic, avisynth, yaml, vhdl, cpp, logtalk, powerbuilder, gml, perl, icon, sdlbasic, fo, ocaml-brief, mmix, providex, pic16, klonec, abap, gwbasic, nagios, pike, genero, purebasic, zxbasic, haxe, lotusformulas, awk, visualfoxpro, cobol, pcre, ocaml, apt_sources, chaiscript, autoconf, j, intercal, 68000devpac, xml, asp, lotusscript, bascomavr, genie, tcl, prolog, upc, rebol, octave, nsis, groovy, cil, mirc, smalltalk, oracle11, pycon, mpasm, dos, rsplus, c, locobasic, ini, bash, d, javascript, vedit, magiksf, thinbasic, lb, parasail, proftpd, whitespace, oz, whois, teraterm, 4cs, actionscript, csharp, apache, make, objc, boo, fortran, delphi, oorexx, idl, ecmascript, visualprolog, algol68, verilog, html5, caddcl, haskell, uscript, blitzbasic, rpmspec, java, rexx, scilab, bibtex, ldif, inno, c_loadrunner, hq9plus, perl6, erlang, gdb, kixtart, vim, oracle8, reg, dcs, typoscript, per, hicest, objeck, eiffel, mysql, actionscript3, parigp, pys60, 6502acme, lscript, epc, gettext, scala, tsql, lsl2, matlab, autoit, pf, xpp, robots, ruby, cmake, ada, systemverilog, winbatch, c_mac, jquery, text, e, io, php-brief, pixelbender, modula3, glsl, autohotkey, email, cfm, bf, sql, 6502tasm, arm, dcl, cpp-qt

Aynı tabloda hangi tabloda, hangi yetkilere sahip olduğu bilgilerini de bulabiliyoruz. Alan adı "rdb$relation_name"

Yine aynı tabloda yetkiler rdb$privelege alanında bulunuyor. Değerler baş harflerdir. S = Select, I = Insert gibi.

FlameRobin kullanarak gözatmanızı tavsiye ederim.




  Alıntı
Bu mesajı beğenenler:
#5
Evet hocam
Kod:
SELECT  RDB$USER
FROM RDB$USER_PRIVILEGES
group by
1
Bu kodla user list geldi fakat en az bir yetki verilmiş uerlar gelsi sanırım. Tüm görmek için ne yapıyoruz?



  Alıntı
Bu mesajı beğenenler:
#6
Yanlış anlamadıysam "Security.fdb" dosyası düzeyinde listelensin istiyorsunuz. Doğru mu?

VB.Net FB Provider bunu rahat yapıyor. Forum/Konu Visual Basic olduğuna göre aşağıdaki metotlar ile alınabiliyor.

- Doğrudan "fbclient.dll" Firebird API ile listeleme. Kullanımı biraz karmaşık olan API fonk. ile ben baş edemedim. Smile

- GSEC tool' unu bir notepad' e açarak ekrana alma: Şu an VBA ile kullanılabilecek en kolay yol.

Visual Basic
  1. Sub DOS_Ciktisini_Oku()
  2. Dim Wsh As Object
  3. Dim i As Integer
  4. Dim j As Byte
  5.  
  6. '// Zeki 2008 ©
  7.  
  8. Set Wsh = CreateObject("WScript.Shell")
  9.  
  10. Wsh.Run _
  11. "cmd /c ""C:\Program Files\Firebird\Firebird_2_5\bin\gsec.exe"" " & _
  12. "-user SYSDBA -password masterkey -display > C:\USERS.txt", vbHide, True
  13.  
  14.  
  15. Open "C:\USERS.txt" For Input As #1
  16.  
  17. While Not EOF(1)
  18.  
  19. i = i + 1
  20. Line Input #1, Data
  21.  
  22. If i > 2 Then
  23. Debug.Print Split(Data, " ")(0)
  24. End If
  25.  
  26. Wend
  27.  
  28. Close #1
  29.  
  30. Kill "C:\USERS.txt"
  31.  
  32. Set Wsh = Nothing
  33.  
  34. End Sub



- Doğrudan GSEC tool ms-dos ekranından alma. GBAK.exe ile yedekleme adımlarını eş zamanlı olarak ekrana alabiliyorum. Kullanıcı listeleme için hazırlama ihtiyacı duymadım.



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Firebird Store procedure le Bul ve Değiştir AhmetNuri 2 3.310 26-06-2022, 00:20
Son Mesaj: Zeki Gürsoy
  Firebird : Kurulum ve Connection Zeki Gürsoy 9 16.032 21-04-2021, 15:13
Son Mesaj: sarsak
access-sql-14 Firebird : Yürüyen Bakiye Uygulaması Zeki Gürsoy 16 14.862 12-08-2015, 14:12
Son Mesaj: akuyumcu63
  Firebird Aynı Kayıtları bul ve sil AhmetNuri 0 3.198 12-10-2012, 20:52
Son Mesaj: AhmetNuri
  firebird ile listelenmiş verinin kaynak tablosunu değiştirme yardım! muratxx5 1 2.707 21-05-2012, 00:05
Son Mesaj: Zeki Gürsoy
  Firebird otmatik loglama (Trigger Level Loging) AhmetNuri 6 8.651 26-03-2012, 01:31
Son Mesaj: Zeki Gürsoy
  Firebird Veritabanında olan procedure lar nasıl gizlenir softdestek 8 6.737 19-03-2012, 21:40
Son Mesaj: softdestek
  Firebird : DateDiff (Excel ETARİHLİ fonk. birebir kopyası) Zeki Gürsoy 0 4.264 21-02-2012, 02:58
Son Mesaj: Zeki Gürsoy

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar):