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管理员用户。 接下来我们来看。

运行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用户创建测试表。 我们这样做有两个原因。

  1. 验证管理员用户是否具有所有权限,并且能够执行这些SQL命令。
  2. 验证稍后将创建的应用程序级用户的权限。
ij> connect 'jdbc:derby://localhost:11528/resiste' user 'sa_resiste' password 'derby123';
ij> create schema testing;
ij> set schema testing;
ij> create table names (full_name varchar(100));
ij> insert into names values ('rita red');
ij> select * from names;
FULL_NAME
----------------------------------------------------------------------------------------------------
rita red
ij> disconnect;

接下来,让我们创建应用程序级用户。

创建应用程序用户

现在来看看有趣的东西。 让我们创建一个应用程序级用户。 这将是一个用户,其权限仅限于应用程序能够执行的操作。 例如,如果您的微服务仅用于获取数据,则应用程序级用户应仅对数据库表具有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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言程序设计常用语句格式,全国计算机考试二级C语言程序设计要求

(一)C语言的结构1、程序的构成,main函数和其他函数。2、头文件、数据说明、函数的开始和结束标志。3、源程序的书写格式。4、C语言的风格。(二)数据类型及其运算1、C的数据类型(基本类型、构造类型、指针类型、空类型)及其定义方法。2、C运算符的种类、运算优先级和…

python绘制直方图显示数字_python dataframe中各元素出现次数统计及画直方图

比如: print(Counter(a[0])) Counter({sausage: 825, whole milk: 717, frankfurter: 580, tropical fruit: 482, other vegetables: 460, citrus fruit: 453, pork: 385, rolls/buns: 336, chicken: 311, canned beer: 310, beef: 304, soda: 294, root vegetables…

应用c语言编辑画图程序,应用C语言编辑画图程序

您可能感兴趣的话题:C语言核心提示:笔者在开发县级电网调度自动化系统的过程中,碰到一个要绘制电力系统一次接线图的问题笔者在开发县级电网调度自动化系统的过程中,碰到一个要绘制电力系统一次接线图的问题.由于电力系统一次接线图比较复杂,用一般的编程…

多少秒算长镜头_自从搞烘焙后,遇到烘焙模具换算,秒变数学渣...

从小学到大学我们学习的计量单位简直太多了,秒、米 、千克、开尔文、安培、坎德拉、摩尔......什么长度、体积、面积都知道怎么算,想想上学的时候我还是很强大的。 自从搞烘焙后,遇到烘焙模具换算,秒变数学渣...教程食谱中的一小勺…

怎样实现登录用户管理_如何编写程序实现图书管理系统里面的用户管理功能

上节课完成了库存管理功能。这节课来完成用户管理功能。编写用户管理功能用户管理主要是针对数据库表user进行维护,功能包括查询、新增、编辑和删除。特别注意,删除用户时要确保该用户的不存在订单记录。防止在查询订单时找不到对应的用户信息&#xff0…

rest开发_REST 101开发人员专用

rest开发本地代码执行 诸如C之类的高级语言中的函数将被汇编为Assembly中的过程 。 它们增加了一个间接级别,使我们不必考虑内存地址。 诸如Java之类的面向对象语言中的方法和多态性增加了另一种间接性 ,使我们不必考虑一组相似功能的特定变体。 尽管…

c语言 交互式电子白板案例,交互式电子白板教学案例

交互式电子白板教学案例交互式电子白板教学案例——电子白板让修改习作不再难钢城一小 熊莉红前言——转眼间,一年的时间稍瞬即逝。2012年的暑假,我们学校在每一个班级都安装了交互式电子白板,面对着这一新兴的产物,老师们跃跃欲试…

matlabrvctools主要功能及实际应用_【从业必备 | 收藏】ISO26262功能安全标准白皮书:关键组成、软硬件认证、测试过程、合规认证工具...

ISO26262功能安全标准白皮书:关键组成、软硬件认证、测试过程,合规的认证工具目 录背景ISO 26262的关键部分硬件组件认证软件组件认证“在实践中证明”的证据应用于现有流程测试工具认证下一步1. 背景随着各行业引进一系列产品设计和测试的标准化流…

python语言中整型对应的英文_Python基本数据类型详细介绍(转)

1、空(None)表示该值是一个空对象,空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。 2、布尔类型(Boolean) 在 Python中&#xf…

JVM体系结构:JVM中的执行引擎

各位读者好! 在JVM系列的上一篇文章中,开发人员了解了虚拟机的ClassLoader和Runtime Data Areas组件。 本教程将帮助开发人员正确理解JVM中的执行引擎 。 1.简介 在继续之前,让我们看一下Java虚拟机及其基本特征。 1.1什么是Java虚拟机&…

简单c语言课设计题目,C语言课程设计题目

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼18、学生管理系统(限最多2人完成)使用下面的数据,用C设计一个简单的学籍管理系统,实现出最基本的功能。学生基本信息文件(A.TXT)及其内容:A.TXT文件不需要编程录入数据,可用文本编辑工…

python编程语言优缺点_原创001 第一次接触这个神奇而又无所不能的编程语言:Python...

***********************人生苦短,我用Python,不定期更新博客,小伙伴们记得关注******************** OK,说到Python这个语言,相信大家。对它还是有一点小陌生,对于编程语言来说,我们大家耳熟能…

android文件读写操作布局文件代码,android实现文件读写功能

本文实例为大家分享了android实现文件读写功能的具体代码,供大家参考,具体内容如下读取:public static String _getJsonString(String fileName)throws IOException {if ((fileName null) || fileName.isEmpty()) {return "";}Str…

ese如何实现支付 nfc_海运费如何实现快捷支付?答案有了

快捷支付时代,海运费支付能否更简单?“航运在线通”给出了答案。1月9日,中国银行天津市分行举行了“航运在线通”产品发布会。天津市商务局、天津市金融局、天津市税务局、中国人民银行、国家外汇管理局天津市分局、中国银行总分行相关领导及…

smtplib 抄送邮件_用Python收发电子邮件

电子邮件是最古老的互联网服务之一,发明于1969年,它已经50岁了!它并不要求收信人发信人同时连接网络,邮件存放于服务器,所以至今在企业内部还在大量使用。而且它是开放协议,没有被某大公司垄断。我们完全可…

带有JUnit 5支持的Ant 1.10.3发布

我们今天刚刚发布了 1.9.11和1.10.3版本的Ant。 这些下载位于Ant项目的下载页面上 。 这两个版本主要是错误修复版本,尤其是1.9.11版本。 由于几个原因,1.10.3版本是重要的版本。 先前的1.10.2版本无意中引入了许多更改,这些更改导致Ant任务中…

android 号码查联系人,Android联系人查询

我在查询电话簿联系人时遇到问题.我需要做的是获取同时输入电话和电子邮件或特定类型的联系人列表.基本上是这样的:public static final String SELECTION "("ContactsContract.Contacts.HAS_PHONE_NUMBER "1) OR " RawContacts.ACCOUNT_TYPE …

console.log()不显示结果_RNA结合蛋白与RNA的缠绵故事,教你不做实验发文章

解螺旋公众号陪伴你科研的第1869天继续学习如何不做实验发文章RNA结合蛋白是(RNA binding protein,RBP)细胞中一类可以识别特殊的RNA结合域与RNA互作,并参与RNA剪切、转运、序列编辑、胞内定位及翻译控制等多种转录后的调控过程中。既然RBP功能这么重要&…

watch gt 鸿蒙,鸿蒙登陆第三站:第一枚Harmony手表亮相?华为Watch GT 2e首发

作者|蒋杰升简称|单蒋让你们荡起昨天(3月19日)中午,华为官方放出两款华为WatchGT 2全新配色:玫瑰金、冰雪白。而前一天则是被猜测新增石墨黑、火山红、薄荷绿三种配色。至此,华为WatchGT 2改款Watch GT 2e,定于3月26日发布已无悬念…

JPA技巧:避免N + 1选择问题

介绍 诸如JPA的ORM框架通过帮助我们在对象<->关系数据映射期间避免了很多样板代码&#xff0c;从而简化了我们的开发过程。 但是&#xff0c;它们还会给表带来一些其他问题&#xff0c;N 1是其中之一。 在本文中&#xff0c;我们将简短地探讨该问题以及避免这些问题的一…