Re: Password authentification failed after Quicklis update

Ryan Davis <[email protected]> Fri, 08 Mar 2013 13:58:55 -0500
Newsgroups gmane.lisp.clsql.general
Message-ID <[email protected]>
On 03/08/2013 07:28 AM, Nicolas Neuss wrote:
> Ryan Davis <[email protected]> writes:
>
>> On 03/07/2013 11:54 AM, Ryan Davis wrote:
>>> On 03/07/2013 09:15 AM, Nicolas Neuss wrote:
>>>> Hi,
>>>>
>>>> I am using clsql/postgresql and after doing a (ql:update-all-dists) I
>>>> cannot connect anymore to my databases with clsql.
>>>>
>>>> While trying to connect to database localhost/noten/neuss
>>>>      using database-type POSTGRESQL-SOCKET:
>>>>      Error POSTGRESQL-LOGIN-ERROR / FATAL:  password authentication failed for user "neuss"
>>>>
>>>>      has occurred.
>>>>       [Condition of type SQL-CONNECTION-ERROR]
>>>>
>>>> I searched the web and found that in December last year a change in MD5
>>>> broke authentification.  Is this bug still active?  Does anyone have a
>>>> fix?
>>> I think the MD5 issue has been resolved, I think this might be a clsql bug.
>> This is a bug between the postgresql-socket backend and the recent MD5
>> changes. It's the same bug you saw in your google searches, just in a
>> different bit of code.
>>
>> I've committed a fix:
>> http://git.b9.com/?p=clsql.git;a=commitdiff;h=906d7a71b35ee1cd6d281623694bc90ced22c339
>>
>> It'll be some time before that makes it into quicklisp, but you can check
>> out clsql from git into your local-projects directory to get the fix
>> sooner. There are no other parts of clsql vulnerable to this issue.
> Are you sure that this is all which is needed for fixing the bug?  I did
> the above change in my local copy of clsql, and the problem persisted.
No, I'm not sure. I knew that md5sum-sequence was no longer the 
appropriate md5 function to use there, and would cause the error you're 
seeing. I didn't put together a test case, I had hoped I could get away 
with just deploying everyone else's fix to this problem.

>> Thanks,
>> Ryan
>>> Can you try using database type postgresql-socket3?
>>>
>>> Thanks,
>>> Ryan
> This works.  Thank you!  (What is the difference between
> postgresql-socket3 and  postgresql-socket?)
I'm not 100% sure, but here's what I know.

postgresql-socket is a lisp implementation of PostgreSQL's socket 
interface, and clsql's database backend interface.

postgresql-socket3 implements clsql's database backend interface, but 
defers the PostgreSQL connections to the cl-postgres project.

postgresql-socket3 adds a few other capabilities on top of clsql's 
standard database backend interface, notably streaming results from the 
db without putting them all in a list first. We needed that for 
exporting large datasets to CSV over the web.  With postgresql-socket3 
we could hook up the row-reader in CLSQL directly to the HTTP output stream.

Thanks,
Ryan