Ask a Question related to PERL Modules, Design and Development.
-
WantToKnow #1
Perl DBI/DBD MySQL User Authentication Error
Just trying to start learning a little MySQL (version 5.0) and wanted to
interact with my database via perl (version 5.6). I have the latest DBI and
latest DBD-Mysql modules downloaded from the ActiveState website, and I
receive the following error message when I attempt to run my perl script.
Cannot connect to server<<<>>>DBI connect('host=localhost;database=pizza','root',... ) failed: Client
>>>does not support authentication protocol requested by server; consider
>>>upgrading MySQL client at mystage.pl line 49
Google searches have helped me understand that MySql has changed their
password scheme for users starting at version 4.1. And, I pulled the below
snippet that lists the suggested ways to resolve this problem. If I want to
pursue the option described in bullet number 1 - what do I need to upgrade?
I've looked all over and that seems to be missing from all the discussions I
can find. I'd appreciate any help here.
------------------------------------------------------------
To solve this problem, you should use one of the following approaches:
a.. Upgrade all client programs to use a 4.1.1 or newer client library.
b.. When connecting to the server with a pre-4.1 client program, use an
account that still has a pre-4.1-style password.
c.. Reset the password to pre-4.1 style for each user that needs to use a
pre-4.1 client program. This can be done using the SET PASSWORD statement
and the OLD_PASSWORD() function:
mysql> SET PASSWORD FOR
-> 'some_user'@'some_host' = OLD_PASSWORD('newpwd');
Alternatively, use UPDATE and FLUSH PRIVILEGES:
mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd')
-> WHERE Host = 'some_host' AND User = 'some_user';
mysql> FLUSH PRIVILEGES;
Substitute the password you want to use for "newpwd" in the preceding
examples. MySQL cannot tell you what the original password was, so you'll
need to pick a new one.
d.. Tell the server to use the older password hashing algorithm:
1.. Start mysqld with the --old-passwords option.
2.. Assign an old-format password to each account that has had its
password updated to the longer 4.1 format. You can identify these accounts
with the following query:
mysql> SELECT Host, User, Password FROM mysql.user
-> WHERE LENGTH(Password) > 16;
For each account record displayed by the query, use the Host and User values
and assign a password using the OLD_PASSWORD() function and either SET
PASSWORD or UPDATE, as described earlier.
WantToKnow Guest
-
Error In Using Perl To Connect To MySQL
OS: Windows XP SP2 Perl version : v5.8.7 built for MSWin32-x86-multi-thread MySQL version : server: 5.0.21-community-nt MySQL version : client:... -
ERROR 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
When i try to start my mysql server, i get this error ERROR 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'... -
user authentication Error
Dear Gurus i am working on the web project in coldfusion and face a problem in user authentication following or Application.cfm code ... -
New Perl User needs help with POST in perl
I have written my HTML code to where it uses POST to collect information. Where do I start to write a script that collects the data from the web... -
mysql load data infile error from inside a perl program
This is my first attempt at writing something with Perl, so this is beyond a newbie question. I'm both creating a table and trying to use the... -
John Bokma #2
Re: Perl DBI/DBD MySQL User Authentication Error
"WantToKnow" <NoSpam@nc.rr.com> wrote:
With a) a new driver is required I guess since the DBI driver acts like a> Google searches have helped me understand that MySql has changed their
> password scheme for users starting at version 4.1. And, I pulled the
> below snippet that lists the suggested ways to resolve this problem.
> If I want to pursue the option described in bullet number 1 - what do
> I need to upgrade? I've looked all over and that seems to be missing
> from all the discussions I can find. I'd appreciate any help here.
client. I would recommend to give c) a try.
> ------------------------------------------------------------
> To solve this problem, you should use one of the following approaches:
>
> a.. Upgrade all client programs to use a 4.1.1 or newer client
> library.
>
> b.. When connecting to the server with a pre-4.1 client program, use
> an
> account that still has a pre-4.1-style password.
>
> c.. Reset the password to pre-4.1 style for each user that needs to
> use a
> pre-4.1 client program. This can be done using the SET PASSWORD
> statement and the OLD_PASSWORD() function:
>
> mysql> SET PASSWORD FOR
> -> 'some_user'@'some_host' = OLD_PASSWORD('newpwd');
> Alternatively, use UPDATE and FLUSH PRIVILEGES:
>
> mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd')
> -> WHERE Host = 'some_host' AND User = 'some_user';
> mysql> FLUSH PRIVILEGES;
> Substitute the password you want to use for "newpwd" in the preceding
> examples. MySQL cannot tell you what the original password was, so
> you'll need to pick a new one.
--
John Bokma Freelance software developer
&
Experienced Perl programmer: [url]http://castleamber.com/[/url]
John Bokma Guest



Reply With Quote

