日期:2014-05-16  浏览次数:20424 次

Derby设置密码教程(转)

本文转自:http://www.joyzhong.com/archives/643

方法一: ?? 配置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!


/UpLoads/images/sjkjc/20140516031742796686.jpg

名为‘sa’的数据库模式不存在。因为,derby在用户登录之后,会默认使用与用户名相同的模式,如果该模式不存在,就会报错。有两种方法解决这个问题:
第一,?? ?看下你的数据库存在的模式是什么名称?我的是app,那么创建一个名为app的用户,登录后直接就对app模式数据库进行操作了。

/UpLoads/images/sjkjc/20140516031744732379.jpg

?

第二,?? ?不改用户名,直接用sa登录,登录之后运行这条语句:set schema app;再进行操作就OK了。无图无真相,看图:

/UpLoads/images/sjkjc/20140516031745323072.jpg

别高兴得太早,让我们跑到另一个路径下执行ij,悲惨的事情即将发生:

/UpLoads/images/sjkjc/20140516031748605955.jpg

看,我现在是在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,再运行:

/UpLoads/images/sjkjc/20140516031750921030.jpg

这下不输入用户名和密码访问不了了吧。那么输入试试:

/UpLoads/images/sjkjc/20140516031752275138.jpg

大功告成!不管你将数据库放到哪里,也不管你在哪里运行ij,都必须用用户名和密码来查询了。

如果要密码:还是运行上