有CREATE SESSION系統權限的用戶能連接到數據庫服務器並建立數據庫會話。
有CREATE TABLE系統權限的用戶能在自己的模式中創建表。
有CREATE ANY TABLE系統權限的用戶能在數據庫的任何模式中創建表
有CREATE ANY TYPE系統權限的用戶能在系統的任何模式中創建類型及關聯類型體。
有SELECT ANY TABLE系統權限的用戶能查看數據庫中的任何表
有EXECUTE ANY PROCEDURE系統權限的用戶能在數據庫中執行任何存儲過程、存儲函數或打包部件。
有EXECUTE ANY TYPE系統權限的用戶能引用和執行數據庫中任何類型的方法。
GRANT debug any procedure, debug connect session TO USERXXX;
開發人員通常需要若干個系統權限,包括:CREATE TABLE,CREATE VIEW和CREATE TYPE系統權限,以便支持前端應用程序的數據庫模式。
系統中的每個用戶多有CREATE SESSION權限,該權限允許用戶連接到數據庫服務器。
對象權限:是一種賦予用戶在指定的數據庫對象(如表、視圖或存儲過程等)上執行特定類型的操作權限:
具有對CUS視圖的SELECT對象權限的用戶能夠查詢視圖並檢索信息。
具有對CUSTOMERS表的INSERT對象權限能夠向該表插入新航。
具有對partType對象類型的EXECUTE對象的用戶在創建其他數據庫對象並執行該對象的方法時能夠使用該類型。
授予用戶系統權限GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE ANY INDEX, CREATE SEQUENCE, CREATE TYPE
TO YZHQ
WITH ADMIN OPTION;
收回
REVOKE CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE ANY INDEX, CREATE SEQUENCE, CREATE TYPE
FROM YZHQ;
不能向其他用戶授權
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE ANY INDEX, CREATE SEQUENCE, CREATE TYPE
TO YZHQ;
e.g.
SQL> grant create table to becvx;
grant create table to becvx
*
ERROR 位於第 1 行:
ORA-01031: 權限不足
授予用戶對象權限
表: SELECT, INSERT, UPDATE, DELETE, ALTER, INDEX, RREFERENCES
INDEX權限授權者爲表創建索引,當聲明瞭參照完整性約束時,REFERENCES權限允許授權者參照這個表
可以爲INSERT,UPDATE和REFERENCES權限授予列選擇權限
視圖:SELECT, INSERT, UPDATE, DELETE
可以爲INSERT和UPDATE權限授予列選擇權限
序列:SLEECT, ALTERSELECT權限讓授權者利用序列的NEXTVAL和CURRVAL僞列來生成和重用序列號
過程、函數、包、對象類型:EXECUTE
用於對象類型的EXECUTE權限讓授權者在創建其他模式對象和類型時使用該對象類型,同時讓授權者執行該類型的方法。
GARNT INSERT, UPDATE, DELETE, SELECT
ON customers
to lellision;
授予 INSERT, UPDATE, DELETE, SELECT權限
GRANT ALL PRIVILEGES
ON orders
TO lellision
WITH GRANT OPTION;
將ORDERS表的全部對象權限授予了LELLISON,同時附帶了將ORDERS表的表權限授予了其他用戶的選項
GRANT SELECT,
INSERT (id, lastname, firstname),
UPDATE (lastname, firstname),
REFERENCE (id)
ON salesreps
TO lellison;
權限僅爲指定的列授權
撤銷:
REVOKE UPDATE, DELETE ON customers
FROM lellision;
REVOKE ALL PRIVILEGES ON orders
FROM lellison;
REVOKE RREFERENCE ON salesreps
FROM lellison
CASCADE CONSTRAINTS;
CASCADE CONSTRAINTS 表明你要輸出所有將撤銷的REFERENCES對象權限所創建的參照完整性約束。
當爲表相關性的對性類型撤銷EXECUTE對象權限時,FORCE選項是必須的。
管理用戶、角色和權限的DBA視圖:
DBA_USERS 提供用戶的信息
DBA_ROLES 顯示數據庫中所有角色
DBA_COL_PRIVS 顯示列級對象授權
DBA_ROLE_PRIVS 顯示用戶及其角色
DBA_SYS_PRIVS 顯示被授予系統權限的用戶
USER_SYS_PRIVS: 當前用戶所擁有的系統權限
DBA_TAB_PRIVS 顯示用戶及他們在表上的權限
ALL_TAB_PRIVS
ROLE_ROLE_PRIVS 顯示授予角色的角色
ROLE_SYS_PRIVS 顯示授予角色的系統權限
ROLE_TAB_PRIVS 顯示授予角色的表權限
SESSION_PRIVS 顯示允許用戶使用的權限
SESSION_ROLES 顯示當前允許用戶使用的角色
USER_ROLE_PRIVS: 當前用戶被授予的角色
另外還有針對表的訪問權限的視圖:
TABLE_PRIVILEGES
按角色的權限管理
預定義數據庫角色(常見的5個):
CONNECT 基本的用戶角色,允許授權者鏈接到數據庫,然後在相關的模式中創建表、視圖、同義詞、序列和一些其他的對象類型
RESOURCE 建議用於典型的應用開發人員。該角色允許授權者在相關的模式中創建表、序列、數據簇、過程、函數、包、觸發器、
對象類型、基於函數的索引和用戶自定義的操作符
DBA 建議用戶管理員。該角色允許授權者執行任何數據庫功能,因爲它包含了說有的系統權限。此外,改DBA角色的授權者
可以向任何其他數據庫用戶或角色授予任何系統權限
SELECT_CATALOG_ROLE 該角色允許授權者查詢管理員(DBA_)數據字典視圖
EXECUTE_CATALOG_ROLE 該角色允許授權者運行預製的DBMS工具包
創建角色
CREATE ROLE appdev
IDENTIFIED BY yeRtw;
注意:創建一個角色時,Oracle自動把該角色及其管理權授予你,以便你能改變、刪除該角色以及將該角色授予其他角色和用戶。
另外,角色歸系統所有,而非角色創建者所有。
給角色授予系統權限和角色
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE ANY INDEX,
CREATE SEQUENCE, CREATE TYPE
TO appdev;
爲角色授予帶有管理權限的系統權限和角色是不明智的。
GARNT INSERT, UPDATE, DELETE, SELECT
ON customers
to appdev;
GRANT ALL PRIVILEGES
ON orders
TO appdev
WITH GRANT OPTION;
GRANT SELECT,
INSERT (id, lastname, firstname),
UPDATE (lastname, firstname),
ON salesreps
TO appdev;
注意:Oracle不允許向一個角色授予表的REFERENCES對象權限-------當用戶需要這個權限時,必須直接把權限授予該用戶。
##########################
## 設置用戶的缺省角色 ##
##########################
SQL> desc user_role_privs
名稱 是否爲空? 類型
----------------------------------------- -------- ----------------------------
USERNAME VARCHAR2(30)
GRANTED_ROLE VARCHAR2(30)
ADMIN_OPTION VARCHAR2(3)
DEFAULT_ROLE VARCHAR2(3)
OS_GRANTED VARCHAR2(3)
當爲用戶授予角色時,Oracle自動的添加該角色到用戶的缺省角色列表中。
alter user rhora default role resource; 設置用戶缺省角色列表。如果角色沒有在缺省角色列表中,需要使用set role 開啓顯示角色。
SQL> create user rhora identified by rhora;
用戶已創建
SQL> grant connect, resource, dba to rhora;
授權成功。
SQL> conn rhora/rhora
已連接。
SQL> select * from user_role_privs;
USERNAME GRANTED_ROLE ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
RHORA CONNECT NO YES NO
RHORA DBA NO YES NO
RHORA RESOURCE NO YES NO
注意:如果用戶不具帶有CREATE SESSION系統權限的缺省角色,就必須直接爲該用戶授予CREATE SESSION系統權限,
否則這個用戶將不能建立數據庫會話。
QL> conn /as sysdba
已連接。
SQL> alter user rhora default role resource;
用戶已更改。
SQL> conn rhora/rhora
ERROR:
ORA-01045: user RHORA lacks CREATE SESSION privilege; logon denied
警告: 您不再連接到 ORACLE。
SQL> conn /as sysdba
已連接。
SQL> grant CREATE SESSION to rhora;
授權成功。
SQL> conn rhora/rhora
已連接。
SQL> select * from user_role_privs;
USERNAME GRANTED_ROLE ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
RHORA CONNECT NO NO NO
RHORA DBA NO NO NO
RHORA RESOURCE NO YES NO
SQL>
將用戶的角色connect, resource, dba重新添加到缺省列表中
SQL> conn /as sysdba
已連接。
SQL> alter user rhora default role connect,resource,dba;
用戶已更改。
SQL> conn rhora/rhora
已連接。
SQL> select * from user_role_privs;
USERNAME GRANTED_ROLE ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
RHORA CONNECT NO YES NO
RHORA DBA NO YES NO
RHORA RESOURCE NO YES NO
######################################################################################
啓用和禁用角色
(1)會話可以使用帶有ALL選項的SET ROLE命令來啓用對帳號授權的所有角色。然而,當要啓用需要口令的角色時,必須使用
IDENTIFIED BY參數指定該角色及其用戶。
(2)使用SET ROLE命令的NONE選項可以禁用會話的角色。
(3)Oracle自動地禁用已經授權但沒有使用SET ROLE命令啓用的角色。
顯示當前會話啓用的角色列表,輸入select * from session_roles 進行查詢
SQL> conn /as sysdba
已連接。
SQL> create role appdev identified by yeTtw;
角色已創建
SQL> grant CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE ANY INDEX, CREATE SEQUENCE, CREATE TYPE
2 TO appdev;
授權成功。
SQL> create user rhora identified by rhora ;
用戶已創建
SQL> grant connect, resource, select_catalog_role, hs_admin_role to rhora;
授權成功。
SQL> grant appdev to rhora;
授權成功。
SQL> conn rhora/rhora
已連接。
SQL> select * from session_roles;
ROLE
------------------------------
CONNECT
HS_ADMIN_ROLE
RESOURCE
SELECT_CATALOG_ROLE
APPDEV
如果密碼輸錯就會報如下的錯誤:
SQL> set role appdev identified by abc;
set role appdev identified by abc
*
ERROR 位於第 1 行:
ORA-01979: 角色'APPDEV'缺少口令或口令無效
使用SET ROLE語句來啓用APPDEV角色和禁用CONNECT, RESOURCE等其他角色。
SQL> set role appdev identified by yeTtw;
角色集
SQL> select * from session_roles;
ROLE
------------------------------
APPDEV
開啓 CONNECT, RESOURCE角色
SQL> set ROLE
2 CONNECT,
3 RESOURCE
4 ;
角色集
SQL> SELECT * FROM SESSION_ROLES;
ROLE
------------------------------
CONNECT
RESOURCE
啓用該用戶原來具有的角色,注意:這條SET ROLE語句沒有列出HS_ADMIN_ROLE, 它是SELECT_CATALOG_ROLE權限域的一部分。
這是因爲Oracle自動啓用被授予顯示啓用的角色的角色。
SQL> set ROLE
2 CONNECT,
3 RESOURCE,
4 SELECT_CATALOG_ROLE,
5 appdev IDENTIFIED By yeTtw;
角色集
SQL> select * from session_roles;
ROLE
------------------------------
APPDEV
CONNECT
RESOURCE
SELECT_CATALOG_ROLE
HS_ADMIN_ROLE
SQL>
######################################################################################
資源限制
表空間定額
ALTER USER lellison
QUOTA 5M ON users;
ALTER USER rlane
QUOTA UNLIMITED ON users;
向用戶RLANE授予UNLIMITED TABLESPACE系統權限
GRANT UNLIMITED TABLESPACE TO rlane;
啓用資源限制
缺省時,啓動數據庫不實施資源限制。因此,限制用戶訪問服務器資源所必需的第一步是啓用在實例層強制資源限制。
使用下列格式的SQL命令ALTER SYSTEM, 在不關機和重啓Oracle服務的狀態下, 可以啓用和禁用資源限制的強制實施。
ALTER SYSTEM
SET RESOURCE_LIMIT = {TRUE | FALES}
ALTER SYSTEM
SET RESOURCE_LIMIT = TRUE;
alter system 語句只對當前數據庫實例有效,如果打算長期使用資源限制,比阿吉服務器的參數文件使其包含下列參數:
RESOURCE_LIMIT = TRUE
創建新的配置表,使用SQL命令CREATE PROFILE
CREATE PROFILE profile LIMIT
[SESSION_PER_USER { integer | UNLIMITED | DEFAULT}]
[CPU_PER_SESSION { integer | UNLIMITED | DEFAULT}]
[CPU_PER_CALL { integer | UNLIMITED | DEFAULT}]
[CONNECT_TIME { integer | UNLIMITED | DEFAULT}]
[IDLE_TIME { integer | UNLIMITED | DEFAULT}]
[LOGICAL_READS_PER_SESSION { integer | UNLIMITED | DEFAULT}]
[LOGICAL_READS_PER_CALL { integer | UNLIMITED | DEFAULT}]
[COMPOSITE_LIMIT { integer | UNLIMITED | DEFAULT}]
[PRIVATE_SGA { integer | UNLIMITED | DEFAULT}]
[FAILED_LOGIN_ATTEMPTS { integer | UNLIMITED | DEFAULT}]
[PASSWORD_LIFE_TIME { integer | UNLIMITED | DEFAULT}]
[PASSWORD_REUSE_TIME { integer | UNLIMITED | DEFAULT}]
[PASSWORD_REUSE_MAX { integer | UNLIMITED | DEFAULT}]
[PASSWORD_LOCK_TIME { integer | UNLIMITED | DEFAULT}]
[PASSWORD_GRACE_TIME { integer | UNLIMITED | DEFAULT}]
[PASSWORD_VERIFY_FUNCTION {NULL |function |DEFAULT}]
輸入以下語句創建新的資源配置表:
CREATE PROFILE appdev LIMIT
SESSIONS_PER_USER 5
CPU_PER_SESSION UNLIMITED
CPU_PER_CALL 3000
CONNECT_TIME UNLIMITED
IDLE_TIME 30
LOGICAL_READS_PER_SESSION UNLIMITED
LOGICAL_READS_PER_CALL 1000
PRIVATE_SGA 200K;
配置表用戶可以打開最多5個併發的數據庫會話。
配置表用戶的會話可以使用無限的CPU時間,但是每個數據庫請求只有30秒的CPU時間(設置爲3,000個百分之一秒)。如果一個
調用達到了這個CPU極限,那麼Oracle就停止這個操作以避免該會話進一步消耗CPU時間。
配置表用戶的會話可以不限時間的保持對這個實例的連接,而不必斷開連接,但是在自動斷開連接之前,只有30分鐘的空閒時間。
配置用戶的會話可以執行不限次數的邏輯讀取(即可以從硬盤也可以從服務器內存中讀取數據塊),但是每個數據庫請求只有1000個
邏輯塊的讀取操作。如果一個調用達到了這個限制,那麼Oracle就停止這個操作以避免這個會話進一步消耗邏輯讀取。
使用多線程服務器連接到實例的配置用戶會話可以爲MTS分配和使用最多200K佔用內存。
更改配置表的設置
ALTER PROFILE profile LIMIT
[SESSION_PER_USER { integer | UNLIMITED | DEFAULT}]
[CPU_PER_SESSION { integer | UNLIMITED | DEFAULT}]
[CPU_PER_CALL { integer | UNLIMITED | DEFAULT}]
[CONNECT_TIME { integer | UNLIMITED | DEFAULT}]
[IDLE_TIME { integer | UNLIMITED | DEFAULT}]
[LOGICAL_READS_PER_SESSION { integer | UNLIMITED | DEFAULT}]
[LOGICAL_READS_PER_CALL { integer | UNLIMITED | DEFAULT}]
[COMPOSITE_LIMIT { integer | UNLIMITED | DEFAULT}]
[PRIVATE_SGA { integer | UNLIMITED | DEFAULT}]
[FAILED_LOGIN_ATTEMPTS { integer | UNLIMITED | DEFAULT}]
[PASSWORD_LIFE_TIME { integer | UNLIMITED | DEFAULT}]
[PASSWORD_REUSE_TIME { integer | UNLIMITED | DEFAULT}]
[PASSWORD_REUSE_MAX { integer | UNLIMITED | DEFAULT}]
[PASSWORD_LOCK_TIME { integer | UNLIMITED | DEFAULT}]
[PASSWORD_GRACE_TIME { integer | UNLIMITED | DEFAULT}]
[PASSWORD_VERIFY_FUNCTION {NULL |function |DEFAULT}]
ALTER PROFILE appdev LIMIT
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME 1
PASSWORD_LIFE_TIME 30
PASSWORD_GRACE_TIME 5
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED;
配置表用戶連續3個登錄不成功之後,Oracle自動地鎖定該帳號。
如果以爲連續3個的失敗登錄而導致Oracle鎖定了配置表用戶的帳號,那麼Oracle就會保持鎖定該帳號整整一天,然後自動解鎖帳號。
配置表用戶的口令壽命爲30天,加上一個個5天的寬限期限,之後,用戶必須改變口令,否則Oracle鎖定這個帳號。
配置表用戶不能重用舊的口令。
Oracle8i強制實施在用戶配置表中所設置的全部口令管理特性,無論是否啓用帶有ALTER SYSTEM 命令或者RESOURCE_LIMIT服務器參數
的資源限制。
######################################################################################
手工強制用戶口令終止
要求該用戶在下一個會話期間改動這個口令。ALTER USER user PASSWORD EXPIRE
SQL> conn /as sysdba
已連接。
SQL> alter user yzhq
2 password expire;
用戶已更改。
SQL> conn yzhq/yzhq
ERROR:
ORA-28001: the password has expired
更改yzhq的口令
新口令:
重新鍵入新口令:
口令已更改
已連接。
SQL>
######################################################################################
設置用戶的配置表
缺省時,所有的用戶都分配使用數據庫的缺省配置表。爲了將用戶的配置表設置成另一個配置表,可以使用下列格式的
SQL命令ALTER USER.
ALTER USER user
PROFILE profile
SQL> alter user yzhq profile appdev;
用戶已更改。
SQL> conn yzhq
請輸入口令:
ERROR:
ORA-01017: invalid username/password; logon denied
警告: 您不再連接到 ORACLE。
SQL> conn yzhq
請輸入口令:
ERROR:
ORA-01017: invalid username/password; logon denied
SQL> conn yzhq
請輸入口令:
ERROR:
ORA-01017: invalid username/password; logon denied
SQL> conn yzhq
請輸入口令:
ERROR:
ORA-28000: the account is locked
######################################################################################
更改缺省數據庫的配置表
使用ALTER PROFILE語句可以調整缺省數據庫的設置。
禁用缺省數據庫配置表的口令管理特性。
ALTER PROFILE default LIMIT
PASSWORD_LIFE_TIME UNLIMITED
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_LOCK_TIME UNLIMITED
PASSWORD_GRACE_TIME UNLIMITED
PASSWORD_VERIFY_FUNCTION NULL;
######################################################################################
使用口令複雜性檢查
可以使用SQL命令CREATE PROFILE和ALTER PROFILE的PASSWORD_VERIFY_FUNCTION參數連檢驗配置表用戶口令的複雜性。
爲了啓用所有配置表用戶的口令複雜性檢查,將配置表的PASSWORD_VERIFY_FUNCTION參數設置爲一個函數名,這個函數被
用於檢查口令的複雜性。Oracle提供了缺省函數,該函數必須用位於$ORACLE_HOME/rdbms/admin/目錄中的utlpwdmg.sql
命令腳本來創建。爲了運行該腳本,用SYS來連接。
SQL> @$ORACLE_HOME/rdbms/admin/utlpwdmg.sql
函數已創建。
配置文件已更改
SQL>
SQL> create user rhora2 identified by ac;
create user rhora2 identified by ac
*
ERROR 位於第 1 行:
ORA-28003: 指定口令的口令驗證失敗
ORA-20002: Password length less than 4
SQL> create user rhora2 identified by rhora2;
create user rhora2 identified by rhora2
*
ERROR 位於第 1 行:
ORA-28003: 指定口令的口令驗證失敗
ORA-20001: Password same as or similar to user
SQL> create user rhora2 identified by welcome;
create user rhora2 identified by welcome
*
ERROR 位於第 1 行:
ORA-28003: 指定口令的口令驗證失敗
ORA-20002: Password too simple
SQL> create user rhora2 identified by becvx;
create user rhora2 identified by becvx
*
ERROR 位於第 1 行:
ORA-28003: 指定口令的口令驗證失敗
ORA-20003: Password should contain at least one digit, one character and one
punctuation
SQL> create user rhora2 identified by rmok3h#a;
用戶已創建
SQL> drop user rhora2;
用戶已丟棄
SQL> create user rhora2 identified by becvx3#;
用戶已創建
SQL> alter user rhora2 identified by "becv%3";
用戶已更改。
舊口令:becv%3
新口令:becv#9
SQL> conn rhora2
請輸入口令:
已連接。
SQL> password
更改RHORA2的口令
舊口令:
新口令:
重新鍵入新口令:
ERROR:
ORA-28003: 指定口令的口令驗證失敗
ORA-20004: Password should differ by at \
least 3 characters
口令未更改
SQL>
更改APPDEV配置表以便使用數據庫缺省配置表(SYS.VERFY_FUNCTION)的PASSWORD_VERFY_FUNCTION參數。
ALTER PROFILE appdev LIMIT
PASSWORD_VERIFY_FUNCTION DEFAULT;
######################################################################################
顯示有關用戶的信息
SQL> SELECT username, account_status, default_tablespace, temporary_tablespace, profile
2 FROM dba_users
3 WHERE username IN ('RHORA','RHORA1');
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
------------------------------ ------------------------------
PROFILE
------------------------------
RHORA1 OPEN
SYSTEM TEMP
DEFAULT
顯示有關角色的信息
SQL> select * from dba_roles
2 where role IN ('CONNECT', 'RESOURCE', 'DBA', 'APPDEV');
ROLE PASSWORD
------------------------------ --------
APPDEV YES
DBA NO
RESOURCE NO
CONNECT NO
SQL>
顯示有關表空間定額的信息
爲了顯示在數據庫中爲每個表空間授予的有關分配額的信息,可以查詢DBA_TS_QUOTAS數據字典視圖。
SQL> SELECT tablespace_name, username, bytes, max_bytes
2 FROM dba_ts_quotas;
TABLESPACE_NAME USERNAME BYTES MAX_BYTES
------------------------------ ------------------------------ ---------- ----------
CWMLITE OLAPSYS 15663104 -1
STATSPACK PERFSTAT 96206848 -1
SQL>
當用戶有無限的表空間定額時,DBA_TS_QUOTAS視圖的MAX_BYTES列顯示代碼"-1"。
顯示用戶的配置表的信息
SQL> SELECT profile, resource_name, limit
2 FROM dba_profiles
3 WHERE profile = 'APPDEV';
PROFILE RESOURCE_NAME LIMIT
------------------------------ -------------------------------- ----------------------------------------
APPDEV COMPOSITE_LIMIT DEFAULT
APPDEV SESSIONS_PER_USER 5
APPDEV CPU_PER_SESSION UNLIMITED
APPDEV CPU_PER_CALL 3000
APPDEV LOGICAL_READS_PER_SESSION UNLIMITED
APPDEV LOGICAL_READS_PER_CALL 1000
APPDEV IDLE_TIME 30
APPDEV CONNECT_TIME UNLIMITED
APPDEV PRIVATE_SGA 204800
APPDEV FAILED_LOGIN_ATTEMPTS 3
APPDEV PASSWORD_LIFE_TIME 30
PROFILE RESOURCE_NAME LIMIT
------------------------------ -------------------------------- ----------------------------------------
APPDEV PASSWORD_REUSE_TIME UNLIMITED
APPDEV PASSWORD_REUSE_MAX UNLIMITED
APPDEV PASSWORD_VERIFY_FUNCTION DEFAULT
APPDEV PASSWORD_LOCK_TIME 1
APPDEV PASSWORD_GRACE_TIME 5
已選擇16行。