İnterbase (xxx.gdb) Şifreleme

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

:ara ma yaparsan daha çok bilgiye daha çabuk ulaşırsın.
:wink:
viewtopic.php?t=9816&highlight=role
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
cerhate
Üye
Mesajlar: 23
Kayıt: 03 Nis 2007 08:38

Mesaj gönderen cerhate »

Öncelikle mucit arkadaşa teşekkür ederim. Mucitin dediğini yaptım ve çalışıyor fakat programı kullanan eski müşterilerime yeni exeyi gönderdiğim zaman programa giremiyolar haliyle şifre değiştiği için, eski şifresi SYSDBA olan müşterilerimin datalarınıda mucit arkadaşın dediği gibi

Kod: Tümünü seç

SET NAMES NONE; 
CREATE DATABASE 'D:\DB\INTERBASE\DATA.GDB' 
USER 'ADMIN' PASSWORD '12345678' 
PAGE_SIZE 4096 
DEFAULT CHARACTER SET WIN1254; 
CREATE ROLE SYSDBA; 
COMMIT; 
değiştirmek istiyorum fakat bunu delphi de yapmak istiyorum. Delphide bunu kod yazarak yapabilir miyiz ?
mucit
Üye
Mesajlar: 83
Kayıt: 24 Kas 2004 10:41
Konum: BURSA

Mesaj gönderen mucit »

Merhaba,

Eski veritabanınıza SYSDBA ile connect olduktan sonra aşağıdaki SQL kodunu bir kez çalıştırmanız yeterlidir. 'MY_USER_NAME' yerine kendi kullanıcı adınızı kullanınız.

Kod: Tümünü seç


INSERT INTO RDB$USER_PRIVILEGES (RDB$USER, RDB$GRANTOR, RDB$PRIVILEGE, RDB$GRANT_OPTION,
  RDB$RELATION_NAME, RDB$FIELD_NAME, RDB$USER_TYPE, RDB$OBJECT_TYPE)
SELECT 'MY_USER_NAME', 'MY_USER_NAME', RDB$PRIVILEGE, RDB$GRANT_OPTION, RDB$RELATION_NAME,
  RDB$FIELD_NAME, RDB$USER_TYPE, RDB$OBJECT_TYPE  FROM  RDB$USER_PRIVILEGES
    WHERE RDB$GRANTOR = 'SYSDBA'  AND RDB$USER = 'SYSDBA' AND (RDB$RELATION_NAME
      IN (SELECT RDB$RELATION_NAME FROM RDB$RELATIONS  WHERE RDB$OWNER_NAME = 'SYSDBA')
      OR RDB$RELATION_NAME IN (SELECT RDB$PROCEDURE_NAME FROM RDB$PROCEDURES
    WHERE RDB$OWNER_NAME = 'SYSDBA'));

INSERT INTO RDB$USER_PRIVILEGES (RDB$USER, RDB$GRANTOR, RDB$PRIVILEGE, RDB$GRANT_OPTION,
  RDB$RELATION_NAME, RDB$FIELD_NAME, RDB$USER_TYPE, RDB$OBJECT_TYPE) SELECT RDB$USER,
  'MY_USER_NAME', RDB$PRIVILEGE, RDB$GRANT_OPTION,  RDB$RELATION_NAME, RDB$FIELD_NAME,
  RDB$USER_TYPE, RDB$OBJECT_TYPE FROM RDB$USER_PRIVILEGES WHERE RDB$GRANTOR = 'SYSDBA'
  AND RDB$USER <> 'SYSDBA' AND (RDB$RELATION_NAME IN (SELECT RDB$RELATION_NAME FROM RDB$RELATIONS
  WHERE RDB$OWNER_NAME = 'SYSDBA') OR RDB$RELATION_NAME IN (SELECT RDB$PROCEDURE_NAME FROM RDB$PROCEDURES
  WHERE RDB$OWNER_NAME = 'SYSDBA'));

DELETE FROM RDB$USER_PRIVILEGES
WHERE RDB$GRANTOR = 'SYSDBA' AND (RDB$RELATION_NAME IN (SELECT RDB$RELATION_NAME FROM RDB$RELATIONS
  WHERE RDB$OWNER_NAME = 'SYSDBA') OR RDB$RELATION_NAME IN (SELECT RDB$PROCEDURE_NAME FROM RDB$PROCEDURES
  WHERE RDB$OWNER_NAME = 'SYSDBA'));

UPDATE RDB$RELATIONS SET RDB$OWNER_NAME = 'MY_USER_NAME'
WHERE (RDB$RELATION_NAME IN (SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$OWNER_NAME = 'SYSDBA')
  OR RDB$RELATION_NAME IN (SELECT RDB$PROCEDURE_NAME FROM RDB$PROCEDURES WHERE RDB$OWNER_NAME = 'SYSDBA'));

UPDATE RDB$PROCEDURES SET RDB$OWNER_NAME = 'MY_USER_NAME'
WHERE (RDB$PROCEDURE_NAME IN (SELECT RDB$PROCEDURE_NAME FROM RDB$PROCEDURES
  WHERE RDB$OWNER_NAME = 'SYSDBA'));

COMMIT WORK;

INSERT INTO RDB$ROLES VALUES ('SYSDBA', 'MY_USER_NAME');

COMMIT WORK;

Kolay gelsin..
ZeynelAbidin
Üye
Mesajlar: 69
Kayıt: 02 Oca 2009 09:03

Re: İnterbase (xxx.gdb) Şifreleme

Mesaj gönderen ZeynelAbidin »

Yukarıdaki komutu nerede yazıyorsunuz.Ben yazacağım yeri bulamadımda.(Ensondaki komutu)
mucit
Üye
Mesajlar: 83
Kayıt: 24 Kas 2004 10:41
Konum: BURSA

Re: İnterbase (xxx.gdb) Şifreleme

Mesaj gönderen mucit »

Merhaba,

Bu komutu IBExpert ya da benzeri bir araçta SQL Editör den çalıştırabilirsiniz. Ya da kendi programınızda Query ile ExecSQL şeklinde çalıştırabilirsiniz.
Kolay Gelsin.
ZeynelAbidin
Üye
Mesajlar: 69
Kayıt: 02 Oca 2009 09:03

Re: İnterbase (xxx.gdb) Şifreleme

Mesaj gönderen ZeynelAbidin »

Ben bu kodu hala çalıştıramadım.İbexpertte sql editörde çalıştırıdığım zaman hepsini tek seferde

Kod: Tümünü seç

can't format message 13:896 -- message file C:\Program Files (x86)\HK-Software\firebird.msg not found.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 10, column 1.
INSERT.
Bu uyarıyı veriyor.
Her komutu ayrı ayrı çalıştırdığımda ise
bu satırda

Kod: Tümünü seç

INSERT INTO RDB$ROLES VALUES ('SYSDBA', 'KullaniciAdi');
bu uyarıyı veriyor.

Kod: Tümünü seç

can't format message 13:196 -- message file C:\Program Files (x86)\HK-Software\firebird.msg not found.
Dynamic SQL Error.
SQL error code = -804.
Count of read-write columns does not equal count of values.
Aynı hataları kendi programımdada yapmak istediğimde aynı sonuçla karşılaşlıyorum.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: İnterbase (xxx.gdb) Şifreleme

Mesaj gönderen aslangeri »

s.a.
query editör tek tek queryleri çalıştırmak için.
script editörü kullanabilirsin.

kullandığın versiyon yukardaki scriptlerin hazırlandığı tarihten sonra çıkmış bir versiyon sanırım.
rdb$roles tablosundaki alan sayıları tutmuyor diyor. ya alanların isimlerinide ver yada eksik alanlar içnde değer ataman lazım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ZeynelAbidin
Üye
Mesajlar: 69
Kayıt: 02 Oca 2009 09:03

Re: İnterbase (xxx.gdb) Şifreleme

Mesaj gönderen ZeynelAbidin »

ya alanların isimlerinide ver yada eksik alanlar içnde değer ataman lazım.
kolay gelsin.
ben hangi alanları eklediğimi veya eklemem gerektiğni bilmiyorum ki.ben ordaki komutu olduğu gibi alıp çalıştırmaya çalışıyorum.acaba komutu nasıl değiştireceğimi söyleyebilirmisiniz?
ZeynelAbidin
Üye
Mesajlar: 69
Kayıt: 02 Oca 2009 09:03

Re: İnterbase (xxx.gdb) Şifreleme

Mesaj gönderen ZeynelAbidin »

Birde şunu merak ediyorum ben eğer Delphi tarafında kullanıcı tanımlarsam SYSDBA kullanıcısı istediği bütün kullanıcıların şifresini değiştiremiyor mu?Değiştirebiliyorsa ozaman bu işte sağlam olmadı yani veya ben bu database deki user mantığınımı anlamadım.Eğer SYSDBA tanımlı olan kullanıcının şifresini değiştirebiliyorsa o zaman biz database on connectine (firebird tarafında) eğer bağlanan kullanıcının şifresi bizim tanımladığımız şifre değilse bağlanmasını engelleyebiliyormuyuz ve yapabiliyorsak bu işlemi nasıl yapabiliriz.
Hazır buraya yazmışken Delphi tarafında tanımladığım kullanıcıya yetkiyi query execsql ile mi vereceğim.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: İnterbase (xxx.gdb) Şifreleme

Mesaj gönderen aslangeri »

Kod: Tümünü seç

select * from rdb$roles 
dereseniz tablodaki alanları görebilirsiniz.
insert sql ini ordaki alanlara göre düzenlersiniz.

diğer sorunuzu açıkçası tam anlamadım.
eğer farklı bir konu ise yeni bir başlık açarsan iyi olur.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ZeynelAbidin
Üye
Mesajlar: 69
Kayıt: 02 Oca 2009 09:03

Re: İnterbase (xxx.gdb) Şifreleme

Mesaj gönderen ZeynelAbidin »

Hayır o sorumda yine bu konu ile ilgili.Eğer SYSDBA kullanıcısı bütün kullanıcıların şifresine müdahale edebiliyormu onu sordum.Eğer müdahale edebiliyorsa bu SYSDBA dan kurtulmak için bizim tanımladığımız kullanıcının şifresini database onconnect anında bağlanan kullanıcının şifresi benim tanmladığım şifremi kontrolü yapabilirmiyiz dedim.
Cevapla