Hi Rick,
That was exactly the problem. I missed that in the docs about password expiry.
I set it with a system-wide property and all is good now.
Thanks for your prompt assistance!
Kerry
On 22/08/2020 16:16, Rick Hillegas wrote:
> Hi Kerry,
>
> Thanks for that detailed explanation of your issue. The most likely problem
> is that your user passwords have expired. Check the value of the system
> property derby.authentication.native.passwordLifetimeMillis. The following
> command should get you that value:
>
>
> VALUES
> SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.authentication.native.passwordLifetimeMillis')
>
> If you set this property to 0, then your passwords will not expire, according
> to http://db.apache.org/derby/docs/10.15/ref/rrefproperpasswordmillis.html
>
> The default password lifetime is one month, according to
> http://db.apache.org/derby/docs/10.15/security/csecnativeotherprops.html. The
> DBA's password does not expire. That would explain why the DBA can connect
> but no-one else can. As you get down to the wire on your password's lifetime,
> you will receive SQLWarnings when you connect. It is likely that your
> application does not check for these warnings, so you never know that
> passwords are about to age out.
>
> Let us know if that is not the problem. Hope this helps...
>
> -Rick
>
> On 8/22/20 7:50 AM, Kerry wrote:
>> Hi,
>>
>> I appear to be having a very odd issue with Derby. I have found on more than
>> one occasion (it seems) that all users previously granted access to a
>> database are suddenly denied connection and access and there has been no
>> deliberate changes applied by myself in respect of user access or any other
>> kind of change - I am the only one with access/uses the DB on my home
>> network. And I am sure this has now occurred more than once, previously I
>> had assumed I had messed something up.
>>
>> The database can be considered 'production' so there are no deliberate
>> changes made to it on my part. Once every week, I have an autonomous service
>> that gathers some data and pushes it into the Derby instance. That is all it
>> does and it has been happily doing this for the past several weeks. However
>> when I checked the logs of the autonomous service today I found it was
>> giving:
>>
>> java.sql.SQLNonTransientConnectionException: Connection authentication
>> failure occurred. Reason: Userid or password invalid.
>>
>> I have manually tried connecting to the database with several other user IDs
>> including the 'owner' but I get the same error. The only user that can
>> connect is the one I used to set up the credentials database - I am using
>> native authentication with a dedicated database, or at least that is how I
>> believe I have set this up. However this particular user cannot select
>> anything from the tables etc because it was never granted permission and
>> because it isn't the owner of the database I cannot change the permissions.
>>
>> I think last time this happened I tried copying the database folder to
>> another derby instance which had no authentication enabled in an attempt to
>> recover the data but I seem to remember the user permissions were copied
>> with the directory and I wasn't able to recover the data.I cannot rule out
>> some third-party interference but it would seem unlikely as the database is
>> on my home network which isn't open to the world.
>>
>> Because I cannot connect to the database and select data, does this mean I
>> have lost access completely or is there something I can modify in the
>> database directory to allow me to recover the data?
>>
>> Thanks for any help or suggestions
>>
>> Kerry
>>
>>
>