apache derby_Apache Derby数据库用户和权限
apache derby
抽象
Apache Derby很棒! 尤其是在微服務環境中,服務的數據(可能)會縮減,并且不需要強大的RDBMS。 Derby很棒,因為它非常易于使用,特別是在涉及用戶和權限時,您不需要任何東西! 但是,您可能需要創建一個在Derby中使用具有有限權限的應用程序級用戶。 該博客的目的是說明如何在Derby中創建應用程序級的受限權限用戶。
免責聲明
這篇文章僅供參考。 在使用所提供的任何信息之前,請認真思考。 從中學到東西,但最終自己做出決定,風險自負。
要求
我使用以下主要技術完成了本文的所有工作。 您可能可以使用不同的技術或版本來做相同的事情,但不能保證。
- Apache Derby 10.14.1.0
- Java 1.8.0_152_x64
我將不涉及下載和安裝這些技術的過程。 我將其留給您練習。
運行Derby網絡服務器
您必須做的第一件事是運行Derby網絡服務器。 在我以前的博客文章“ 同一主機上的多個Derby網絡服務器”中 ,我提供了有關如何執行此操作的詳細說明。 這是tldr; (對于Windows):
config-resiste.cmd
@echo off REM --- START EDITING --- set DERBY_HOME=C:\Users\Michael\Applications\Derby\db-derby-10.14.1.0-bin set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_152 set NS_HOME=C:\Users\Michael\Applications\Derby\servers\resiste\data set NS_PORT=11528 REM --- STOP EDITING --- set PATH=%DERBY_HOME%\bin;%PATH% set DERBY_OPTS=-Dderby.drda.portNumber=%NS_PORT% -Dderby.system.home=%NS_HOME%起始電阻
@echo off call config-resiste.cmd StartNetworkServer停止電阻
@echo off call config-resiste.cmd StopNetworkServer現在您可以運行Derby網絡服務器,讓我們對其進行配置。
配置Derby網絡服務器
要配置Derby網絡服務器,您需要創建一個derby.properties文件。 但是文件去哪了? 它可以在幾個不同的地方去。 讓我們來看看。
我首先假定您忽略了上面的“運行Derby網絡服務器”部分,而是使用所有默認設置運行Derby。 在這種情況下,您可能通過找到%DERBY_HOME%\bin\startNetworkServer.bat文件并雙擊來啟動網絡服務器。 如果這樣做(強烈建議不%DERBY_HOME%\bin則Derby會認為%DERBY_HOME%\bin目錄是其系統目錄。 您可以通過查找%DERBY_HOME%\bin\derby.log文件來確認。 如果確認,則需要創建%DERBY_HOME%\bin\derby.properties文件。 無論derby.log文件在哪里,都可以在其中創建derby.properties文件。
另一方面,如果您沒有忽略上面的“運行Derby網絡服務器”部分,那么恭喜您! derby.properties文件必須進入-Dderby.system.home Java系統屬性設置的目錄。 請參閱上面的config-resiste.cmd文件示例。
既然您知道將derby.properties文件放在derby.properties ,這里是(示例)放入其中的內容:
# Passwords don't expire for 10 years derby.authentication.native.passwordLifetimeMillis=315360000000# Use the best hash algorithm you can derby.authentication.builtin.algorithm=SHA-512# Use a larger salt length for better security derby.authentication.builtin.saltLength=128# Re-hash this number of times for better security derby.authentication.builtin.iterations=1564現在,您已經配置了網絡服務器。 啟動它,讓我們使用它。 我們將使用它的第一件事是配置Derby admin用戶。 接下來我們來看。
運行ij
在配置Derby admin用戶之前,我們首先需要運行ij應用程序。 ij對Derby來說就像sqlplus對Oracle一樣; 只是一個簡單的命令行界面。 查找并運行%DERBY_HOME%\bin\ij.bat 。
注意對于博客的其余部分, "ij>"提示符將指示必須在ij執行SQL命令。 我假設您會發現需要運行ij來執行這些命令。
現在ij正在運行,我們可以完成一些工作。 讓我們看一下該Derby管理員用戶。
創建管理員用戶
現在,Derby網絡服務器已配置并正在運行,我們需要配置admin用戶。 管理員用戶將具有執行任何數據庫操作的完整權限。 讓我們看一下命令:
ij> connect 'jdbc:derby://localhost:11528/resiste;create=true;' user 'sa_resiste'; ij> CALL SYSCS_UTIL.SYSCS_CREATE_USER('sa_resiste', 'derby123'); ij> disconnect; ij> exit;第1行是用于連接數據庫的標準JDBC連接字符串。 數據庫名稱為resiste 。 由于這是第一次連接數據庫,因此連接字符串包含create=true; 創建數據庫。 我使用sa_resiste用戶連接到數據庫,并且由于是在第一次連接時創建數據庫,因此sa_resiste用戶將被設置為admin用戶。 第2行使用密碼derby123創建該用戶。 然后,第3行和第4行與數據庫斷開連接并退出ij 。
立即重新啟動網絡服務器
重新啟動后,讓我們看看它是否有效。 使用sa_resiste連接,沒有密碼。 連接將獲得身份驗證失敗。
ij> connect 'jdbc:derby://localhost:11528/resiste' user 'sa_resiste'; ERROR 08004: Connection authentication failure occurred. Reason: Userid or password invalid.現在使用sa_resiste和密碼連接。 連接將成功。
ij> connect 'jdbc:derby://localhost:11528/resiste' user 'sa_resiste' password 'derby123'; ij>好! 現在創建了admin用戶。 接下來,我們將使用admin用戶創建一個表。 該表將用于驗證我們稍后將創建的應用程序級用戶的權限。
創建測試表
現在,我們將使用admin用戶創建測試表。 我們這樣做有兩個原因。
接下來,讓我們創建應用程序級用戶。
創建應用程序用戶
現在來看看有趣的東西。 讓我們創建一個應用程序級用戶。 這將是一個用戶,其權限僅限于應用程序能夠執行的操作。 例如,如果您的微服務僅要獲取數據,則應用程序級用戶應僅對數據庫表具有SELECT權限。 我們將測試應用程序級用戶的權限,但首先讓我們創建用戶。
ij> connect 'jdbc:derby://localhost:11528/resiste' user 'sa_resiste' password 'derby123'; ij> CALL SYSCS_UTIL.SYSCS_CREATE_USER('oscar', 'orange'); ij> disconnect; ij> exit;立即重新啟動網絡服務器
重新啟動后,讓我們看看它是否有效。 與oscar 。 連接將成功,但是, oscar將無權讀取測試表。
ij> connect 'jdbc:derby://localhost:11528/resiste' user 'oscar' password 'orange'; ij> select * from testing.names; ERROR 42502: User 'OSCAR' does not have SELECT permission on column 'FULL_NAME' of table 'TESTING'.'NAMES'. ij> disconnect;即使SELECT語句失敗,失敗也意味著測試成功。 oscar沒有權限,因此應該不能從測試表中進行選擇。 接下來讓我們配置oscar 。
配置應用程序用戶
讓我們為oscar設置一些權限。 當然,需要sa_resiste管理員用戶才能執行此操作。
ij> connect 'jdbc:derby://localhost:11528/resiste' user 'sa_resiste' password 'derby123'; ij> set schema testing; ij> grant select on names to oscar; ij> disconnect;這將只給oscar 1個許可:從TESTING.NAMES表中進行選擇。 讓我們看看它是否有效。
ij> connect 'jdbc:derby://localhost:11528/resiste' user 'oscar' password 'orange'; ij> select * from testing.names; FULL_NAME ---------------------------------------------------------------------------------------------------- rita red ij> disconnect;恭喜你! 現在,您的Derby數據庫中有一個應用程序級別的用戶,其權限有限。
摘要
我希望您喜歡學習如何使用Derby進行簡單的用戶管理。
翻譯自: https://www.javacodegeeks.com/2018/05/apache-derby-database-users-and-permissions.html
apache derby
總結
以上是生活随笔為你收集整理的apache derby_Apache Derby数据库用户和权限的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 备案显示在建工程抵押(备案显示)
- 下一篇: Linux内存设置为只读(linux内存