İnterbase (xxx.gdb) Şifreleme
Ö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
değiştirmek istiyorum fakat bunu delphi de yapmak istiyorum. Delphide bunu kod yazarak yapabilir miyiz ?
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;
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.
Kolay gelsin..
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;
-
- Üye
- Mesajlar: 69
- Kayıt: 02 Oca 2009 09:03
Re: İnterbase (xxx.gdb) Şifreleme
Yukarıdaki komutu nerede yazıyorsunuz.Ben yazacağım yeri bulamadımda.(Ensondaki komutu)
Re: İnterbase (xxx.gdb) Şifreleme
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.
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.
-
- Üye
- Mesajlar: 69
- Kayıt: 02 Oca 2009 09:03
Re: İnterbase (xxx.gdb) Şifreleme
Ben bu kodu hala çalıştıramadım.İbexpertte sql editörde çalıştırıdığım zaman hepsini tek seferde
Bu uyarıyı veriyor.
Her komutu ayrı ayrı çalıştırdığımda ise
bu satırda
bu uyarıyı veriyor.
Aynı hataları kendi programımdada yapmak istediğimde aynı sonuçla karşılaşlıyorum.
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.
Her komutu ayrı ayrı çalıştırdığımda ise
bu satırda
Kod: Tümünü seç
INSERT INTO RDB$ROLES VALUES ('SYSDBA', 'KullaniciAdi');
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.
Re: İnterbase (xxx.gdb) Şifreleme
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.
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
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
-
- Üye
- Mesajlar: 69
- Kayıt: 02 Oca 2009 09:03
Re: İnterbase (xxx.gdb) Şifreleme
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?ya alanların isimlerinide ver yada eksik alanlar içnde değer ataman lazım.
kolay gelsin.
-
- Üye
- Mesajlar: 69
- Kayıt: 02 Oca 2009 09:03
Re: İnterbase (xxx.gdb) Şifreleme
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.
Hazır buraya yazmışken Delphi tarafında tanımladığım kullanıcıya yetkiyi query execsql ile mi vereceğim.
Re: İnterbase (xxx.gdb) Şifreleme
Kod: Tümünü seç
select * from rdb$roles
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
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
-
- Üye
- Mesajlar: 69
- Kayıt: 02 Oca 2009 09:03
Re: İnterbase (xxx.gdb) Şifreleme
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.