tôi tạo một người dùng Firebird (Pippo) thông qua jaybird, sau gsec "hiển thị":dùng Firebird với đặc quyền được cấp không thể truy cập bảng
GSEC> di user name uid gid admin full name ------------------------------------------------------------------------------------------------ SYSDBA 0 0 Sql Server Administrator PIPPO 0 0 GesAll 1.0 User GSEC>
tôi tạo ra một vai trò (GESALLDB_USER) trong Firebird DB và cấp một số ưu đãi:
SQL> show grant; /* Grant permissions for this database */ GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON ANELLI TO ROLE GESALLDB_USER GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON COPPIE TO ROLE GESALLDB_USER GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON COVE TO ROLE GESALLDB_USER GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON DATI_CONFIGURAZIONE TO ROLE GESALLDB_USER GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON DATI_COVE TO ROLE GESALLDB_USER GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON DATI_SOGGETTI TO ROLE GESALLDB_USER GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON DEPOSIZIONI TO ROLE GESALLDB_USER GRANT GESALLDB_USER TO PIPPO SQL>
cấp vai trò này cho người dùng mới qua jaybird (dòng cuối cùng trước đó):
vấn đề là bất cứ khi nào tôi cố gắng chạy một truy vấn tôi nhận được thông báo:
SQL> select * from anelli; Statement failed, SQLSTATE = 28000 no permission for read/select access to TABLE ANELLI SQL>
Nếu tôi cấp trực tiếp BẢNG cho người dùng mới tạo, mọi thứ đều hoạt động.
SQL> grant all on anelli to pippo;
SQL> show grant;
/* Grant permissions for this database */
GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON ANELLI TO ROLE GESALLDB_USER
GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON ANELLI TO USER PIPPO
SQL> connect "C:\Users\teiluke\Documents\Ondulati\DB\prova\gesalldb.fdb" user "p
ippo" password "topolino";
Commit current transaction (y/n)?y
Committing.
Server version:
WI-V2.5.2.26540 Firebird 2.5
WI-V2.5.2.26540 Firebird 2.5/XNet (E7441EA1CA2CF4)/P12
WI-V2.5.2.26540 Firebird 2.5/XNet (E7441EA1CA2CF4)/P12
Database: "C:\Users\teiluke\Documents\Ondulati\DB\prova\gesalldb.fdb", User: pi
ppo
SQL> select * from anelli;
PROGRESSIVO FEDERAZIONE RNA TIPO ANNO INIZIO FINE ATTIVA LAST_USED
============ =========== ====== ====== ====== ============ ============ ====== =
1 FOI 89LR E 2012 1 100 N
0
2 FOI 89LR E 2013 1 100 S
41
Bất kỳ trợ giúp về điều này?
Cảm ơn Gianluca.
Thực hiện theo đề xuất kết quả tương tự: 'SQL> kết nối "c: \ users \ teiluke \ documents \ ondulati \ DB \ prova \ gesalldb.fdb" người dùng "pippo" password "topolino" role "gesalldb_user"; Phiên bản máy chủ: WI-V2.5.2.26540 Firebird 2.5 Cơ sở dữ liệu: "c: \ users \ teiluke \ documents \ ondulati \ db \ prova \ gesalldb.fdb", Người dùng: pippo, Vai trò: gesalldb_user SQL> chọn * từ anelli; Tuyên bố không thành công, SQLSTATE = 28000 không có quyền truy cập đọc/chọn vào BẢNG ANELLI SQL> hiển thị khoản trợ cấp; /* Cấp quyền cho cơ sở dữ liệu này */ . . . GRANT GESALLDB_USER ĐẾN PIPPO ' –
@GianlucaPasqualato Lạ lùng, tôi sẽ cố gắng tái tạo điều này và xem tôi có bỏ sót bất cứ điều gì không. –
@GianlucaPasqualato Tôi chỉ thử nghiệm nó, và vai trò là trường hợp nhạy cảm khi được bao quanh bởi (đơn hoặc đôi) báo giá, do đó, sử dụng 'vai trò' gesalldb_user'' không hoạt động, nhưng bằng cách sử dụng 'vai trò 'GESALLDB_USER'' hoặc' vai trò gesalldb_user' sẽ làm việc. –