首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用身份验证的Derby嵌入式数据库

使用身份验证的Derby嵌入式数据库
EN

Stack Overflow用户
提问于 2015-07-15 06:14:58
回答 1查看 2.6K关注 0票数 3

默认情况下,Apache嵌入式数据库不需要身份验证。我们可以在系统级别或数据库级别启用身份验证。我使用java代码实现了系统级。

代码语言:javascript
复制
Properties p=System.getProperties();
p.put("derby.connection.requireAuthentication", "true");

然后,我尝试使用这个连接URL创建数据库。

代码语言:javascript
复制
jdbc:derby:derbysample;create=true;user=root;password=root

当我运行这个

代码语言:javascript
复制
DriverManager.getConnection(connectionURL);

它创建数据库文件夹还抛出有关身份验证的错误?如何创建具有凭据的数据库?

java.sql.SQLNonTransientConnectionException:连接身份验证失败。原因:身份验证无效。(在org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown来源)在org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown来源)在org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown来源)在org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown来源)在org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown来源)在org.apache.derby.impl.jdbc.EmbedConnection.checkUserCredentials(未知来源)在org.apache.derby.impl.jdbc.EmbedConnection.(Unknown源)在org.apache.derby.jdbc.InternalDriver.getNewEmbedConnection(Unknown来源)在org.apache.derby.jdbc.InternalDriver.connect(Unknown源)在org.apache.derby.jdbc.InternalDriver.connect(Unknown源)在org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown来源)在java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql。DriverManager.getConnection(DriverManager.java:208) at derbytest.DerbyTest.createConnection(DerbyTest.java:56) at derbytest.DerbyTest.main(DerbyTest.java:39),由: ERROR 08004引起:连接身份验证失败。原因:身份验证无效。(在org.apache.derby.iapi.error.StandardException.newException(Unknown来源)在org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(Unknown来源). 15

EN

回答 1

Stack Overflow用户

发布于 2015-07-16 06:41:55

首先,指定要用属性create=true创建的数据库URL

代码语言:javascript
复制
jdbc:derby:derbysample111;create=true

然后使用DriverManager获得连接。如果数据库不存在,它将创建一个数据库。

代码语言:javascript
复制
conn = DriverManager.getConnection("jdbc:derby:derbysample111;create=true");
conn.setSchema("APP");

然后在derby中启用身份验证,并设置用户和密码。它将设置数据库级身份验证。

代码语言:javascript
复制
Statement s = conn.createStatement();
s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\n"
            + "    'derby.connection.requireAuthentication', 'true')");
s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\n"
            + "    'derby.authentication.provider', 'BUILTIN')");
s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\n"
            + "    'derby.user.root', '12345')");
s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\n"
            + "    'derby.database.propertiesOnly', 'true')");

它只需要设置一次。然后可以使用此URL访问数据库。

代码语言:javascript
复制
jdbc:derby:derbysample111;create=true;user=root;password=12345
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31422755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档