Perl DBI/DBD MySQL User Authentication Error

Ask a Question related to PERL Modules, Design and Development.

  1. #1

    Default 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.
    >>>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
    Cannot connect to server<<<

    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

  2. Similar Questions and Discussions

    1. 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:...
    2. 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'...
    3. 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 ...
    4. 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...
    5. 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...
  3. #2

    Default Re: Perl DBI/DBD MySQL User Authentication Error

    "WantToKnow" <NoSpam@nc.rr.com> wrote:
    > 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.
    With a) a new driver is required I guess since the DBI driver acts like a
    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

Posting Permissions

  • You may not post new threads
  • You may post replies
  • You may not post attachments
  • You may not edit your posts

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139