FirebirdSQL 新增資料庫使用者與資料表權限
Firebird 資料庫有個最高權限的 SYSDBA 帳號,正常上線使用下最好將它的密碼進行變更,然後再新增一個使用者並賦予資料表的權限,這樣比較安全。
這些調整指令都透過使用 isql 介面來完成
※注意,使用 isql 調整資料庫相關設定前,先把 Firebird 服務/引擎 先關閉,以免發生占用衝突。
假設我們資料庫是在 D:\NEWDB\test.fdb
首先,變更 SYSDBA 的密碼
C:\FB3>isql -user SYSDBA D:\NEWDb\test.fdb↵
Database: D:\NEWDb\test.fdb, User: SYSDBA
SQL> ALTER USER SYSDBA password 'mustKey';↵
SQL> COMMIT;↵
SQL>
Database: D:\NEWDb\test.fdb, User: SYSDBA
SQL> ALTER USER SYSDBA password 'mustKey';↵
SQL> COMMIT;↵
SQL>
這樣就把密碼變更為 mustKey 了 (注意,Firebird 對帳號沒有大小寫分別,但是密碼有分別)
一、新增使用者
SQL> CREATE USER user01 password 'userPass01';↵
或是創建時同時賦予角色權限(例如管理者權限)
SQL> CREATE USER user01 password 'userPass01' GRANT ADMIN ROLE;↵
※參考 SQL user management commands
※參考 ROLE
※參考 The RDB$ADMIN role
二、對使用者賦予資料表權限
假設我有一個資料表 EMPL
SQL> GRANT SELECT , INSERT , UPDATE ON TABLE EMPL TO USER user01;↵
這代表我只賦予 user01 對 EMPL 只能操作 SELECT、INSERT、UPDATE 三種權限。
基本上,資料表操作權限只有 SELECT、INSERT、UPDATE、DELETE、REFERENCES 這四種,要 CREATE/DROP/ALTER 資料表只能由 SYSDBA 來做。
REFERENCES 這權限是用來讀取資料表的 關聯 資訊(foreign key)的。
如果我要給與全部的權限也可以用 ALL 取代那串長長的命令
SQL> GRANT ALL ON TABLE EMPL TO USER user01;↵
當這些都完成以後,Client APP 就只要使用新增的 user 權限來存取資料表就好了。
※參考 SQL Privileges
留言