in reply to [SOLVED-ISH]DBI Connection Fails with Access Denied on one version of Perl/DBD::MySQL and work on the other

These sorts of problems are always intensely frustrating and you have my sympathy. While there's nothing obviously wrong (to me) in your well-written post I can only offer these 3 possibilities. Hopefully one will be of some help.

Firstly, I can't help but notice that your 3 client environments change 3 things each time between them: perl version, DBI version and DBD::mysql version. This is confounding so it would be great to try to fix it and only change one thing. Probably the easiest is to modify the DBI and DBD::mysql versions in your perlbrew install to be the same as the currently working environment. If you can connect with that then it's a module version issue and you can look into the changelogs, etc. If you can't then it's either a perl version issue (unlikely but not impossible) or an environment issue.

Secondly, and orthogonally, there is a DBD::MariaDB module available. It is for the most part interchangeable with DBD::mysql but since you say you have a MariaDB server, it's probably worth investigating in case it makes the problem vanish in a simple way.

Finally, consider the possibility that the problem might be related to something on the server side. I'm sure you are aware that MariaDB auth may be restricted to certain client IP addresses and there could be a myriad of other reasons why even with seemingly identical connection profiles the server rejects some connection attempts. Try connecting using a completely different client if you can to see if it is some environmental concern which is the underlying cause. It would also help to have a word with the DBA about this as they should be able to say at once if they are using some particular restriction which might explain what you are seeing.

Good luck with your investigations.

  • Comment on Re: DBI Connection Fails with Access Denied on one version of Perl/DBD::MySQL and work on the other

Replies are listed 'Best First'.
Re^2: DBI Connection Fails with Access Denied on one version of Perl/DBD::MySQL and work on the other
by varneraa (Acolyte) on May 29, 2020 at 15:09 UTC
    EDIT: Solved-ish. Part of my problem appears to have been that I only added the bin area of the MySQL version to my path before calling cpanm. Once I added the lib area of the mysql version as well and rebuilt 4.043 DBD::mysql I now have a working version. However, this seems super fragile. 4.050 DBD::mysql doesn't work and MariaDB still doesn't work. This was all with the 5.26.1 version of Perl. I am going to give this a try on my original repo with 5.30.2 and see if it works. At least there is a little light at the end of this tunnel.

    Thanks for the reply. I was having the same thoughts about the versions, just before checking for replies this morning I took the time to sync my perlbrew install with the working standard install and as to be expected, it still does not work...

    Version Matching: No luck. The only variable left there is probably the library version of MySQL used for building DBD::MySQL. I'm not completely sure how to check that for the standard install Perl. I had to add a version to my path before building the ones in perlbrew. I was using 5.1.46-64, but DBD::MariaDB failed to install with that so I found 5.7.16, which allowed the install to complete. However, both DBD::mysql and DBD::MariaDB both hit the 1045 error.

    DBD::MariaDB: No luck. Got it to install, but I'm seeing the same 1045 error

    For a final check, I pointed this at another DB I work with(5.6.34 MySQL) and the perlbrew version works... I'm really annoyed this dbaas service doesn't just offer MySQL...

    I'll have to see if I can get in touch with anyone in IT about this and maybe play around with pointing to other MySQL versions for the DBD builds.