方法一: 配置derby.propertites文件:
文件內容:
derby.connection.requireAuthentication=true
derby.authentication.provider=BUILTIN
derby.user.username=password
將username和password改成你所需要的。我先設username為sa(這里會有問題,后面會講),密碼為password
把這個文件放到你的數據庫所在的目錄下。
然后打開cmd,進入數據庫所在目錄,運行ij工具,如果你不輸入用戶名和密碼,只是輸入如下語句:
Connect ‘jdbc:derby:testDataType;create=true’;
ij會提示你’ connection authentication failure occurred. Reason: Invalid authentication..’
所以,要運行以下語句:
Connect ‘jdbc:derby:testDataType;create=true;user=sa;password=password’;
接下來,如果你要對數據庫進行操作,可能會出問題,試試select些數據,oops!
名為‘sa’的數據庫模式不存在。因為,derby在用戶登錄之后,會默認使用與用戶名相同的模式,如果該模式不存在,就會報錯。有兩種方法解決這個問題:
第一, 看下你的數據庫存在的模式是什么名稱?我的是app,那么創建一個名為app的用戶,登錄后直接就對app模式數據庫進行操作了。
第二, 不改用戶名,直接用sa登錄,登錄之后運行這條語句:set schema app;再進行操作就OK了。無圖無真相,看圖:
別高興得太早,讓我們跑到另一個路徑下執行ij,悲慘的事情即將發生:
看,我現在是在c盤根目錄下運行ij,沒有用用戶名和密碼就直接可以查詢數據庫了。
怎么辦呢?
下面講第二種方法設置derby數據庫密碼。
方法二: 為某一個數據庫設定密碼。
前面講的配置derby.properties文件是為derby數據庫配置系統設置。也就是在數據庫所在目錄下,如果還存在其他數據庫,他們也將會用derby.properties設置的用戶名和密碼來登錄。如果在非derby.properties所在目錄下運行ij,derby.properties將不再生效,ij將使用derby默認的embed模式的配置,也就是不需要用戶名和密碼即可查詢數據庫。
這不是我想要的(為什么要這樣設計呢?我百思不得其解,如果是這樣,別人只要知道你數據庫的路徑,然后在其他路徑下用ij就可以隨便改你的數據庫了)。我希望,不管在哪里運行ij,都必須使用我設置好的用戶名和密碼來查詢數據庫。
請用ij連到數據庫,然后運行以下語句:
CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(‘derby.authentication.provider’,
‘BUILTIN’);
CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(‘derby.connection.requireAuthentication’,
‘true’);
CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(‘derby.user.username’,
‘password’); ————這里username和password改成你的就可以了,下次登錄時則要輸入這里設置的。
CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(‘derby.database.fullAccessUsers’,
‘username’); ————這個username和前面那個一樣
CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(‘derby.database.defaultConnectionMode’,
‘noAccess’);
退出ij,再運行:
這下不輸入用戶名和密碼訪問不了了吧。那么輸入試試:
大功告成!不管你將數據庫放到哪里,也不管你在哪里運行ij,都必須用用戶名和密碼來查詢了。
如果要密碼:還是運行上面的語句,把密碼改成新的,再次運行數據庫的時候就會要求輸入新密碼。
刪密碼,也就是改回不用用戶名和密碼登錄:
只運行這一句:
CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(‘derby.connection.requireAuthentication’,
‘false’);
全部操作可在cmd內運用ij工具完成。用這種方法,可以不用derby.propertites文件了。但是必須牢記用戶名和密碼。
轉自:http://www.joyzhong.com/archives/643