• Our team is looking to connect with folks who use email services provided by Plesk, or a premium service. If you'd like to be part of the discovery process and share your experiences, we invite you to complete this short screening survey. If your responses match the persona we are looking for, you'll receive a link to schedule a call at your convenience. We look forward to hearing from you!
  • We are looking for U.S.-based freelancer or agency working with SEO or WordPress for a quick 30-min interviews to gather feedback on XOVI, a successful German SEO tool we’re looking to launch in the U.S.
    If you qualify and participate, you’ll receive a $30 Amazon gift card as a thank-you. Please apply here. Thanks for helping shape a better SEO product for agencies!
  • The BIND DNS server has already been deprecated and removed from Plesk for Windows.
    If a Plesk for Windows server is still using BIND, the upgrade to Plesk Obsidian 18.0.70 will be unavailable until the administrator switches the DNS server to Microsoft DNS. We strongly recommend transitioning to Microsoft DNS within the next 6 weeks, before the Plesk 18.0.70 release.
  • The Horde component is removed from Plesk Installer. We recommend switching to another webmail software supported in Plesk.

Resolved Database migration fails: Access denied for user 'admin'@'localhost'

Alex Kern

New Pleskian
I want to transfer my current Plesk Onyx (Version 17.0.17 Update #16) to a fresh server (with same Plesk) using the migration tool, but i always get this error:

[20 Feb 17 10:49:59] [Inhalt synchronisieren] Failed to copy content of database 'baxxxxxxel'
Migration tools tried to perform operation in 3 attempts: Command execution failed on the source server 'source' (81.169.243.140) with non-zero exit code.
command: MYSQL_PWD="$(cat)" mysqldump -h localhost -P 3306 -uadmin --quick --quote-names --add-drop-table --default-character-set=utf8 --set-charset --routines baxxxxxxel > /tmp/db-dumps/baxxxxxxel.sql
exit code: 2
stdout:
stderr: mysqldump: Got error: 1045: Access denied for user 'admin'@'localhost' (using password: YES) when trying to connect

I already followed this:
https://kb.plesk.com/de/116916 (Didn't give me the error in 5.)

Any ideas?
Thanks!

:) AK
 
Hey,

Do you get the same error if you force the password change through Plesk? If you do, try reset through cli and try again:

/usr/local/psa/bin/init_conf -u -passwd new_password
 
That won't work. Instead, make sure that the database user "admin@localhost" is set to use the password that is given in the file /etc/psa/.psa.shadow
 
I got the same problem when transfer from source Plesk 10.4.4 to‪ destination Debian 8.7 ‬Product Plesk Onyx Version 17.0.17 Update #17

Migration Error:
[Migration] Failed to copy content of database 'DBNAME'
Migration tools tried to perform operation in 3 attempts: Command execution failed on the source server 'source' (xxx.xxx.xxx.xxx) with non-zero exit code.
command: MYSQL_PWD="$(cat)" mysqldump -h localhost -P 3306 -uadmin --quick --quote-names --add-drop-table --default-character-set=utf8 --set-charset --routines DBNAME > /tmp/db-dumps/DBNAME.sql
exit code: 2
stdout:
stderr: mysqldump: Got error: 1045: Access denied for user 'admin'@'localhost' (using password: YES) when trying to connect

I am quite sure that the database user "admin@localhost" is set to use the password that is given in the file /etc/psa/.psa.shadow

And when I did on source I still got the migration error from above
/usr/local/psa/bin/admin --show-password

I did on source server:
mysql -uadmin -p`cat /etc/psa/.psa.shadow` mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13152525
Server version: 5.1.61-0+squeeze1 (Debian)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SHOW GRANTS FOR 'admin'@'localhost'\G
*************************** 1. row ***************************
Grants for admin@localhost: GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY PASSWORD 'BLABLABLA' WITH GRANT OPTION
1 row in set (0.00 sec)

mysql> GRANT GRANT OPTION ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

So how is de migration tool logging in on the source? Can I check te password that is used?
 
And did you reset the admin@localhost database password to the one stored in /etc/psa/.psa.shadow ?
 
During the investigation I have found a misconfiguration in file /usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/utils/database_utils.py .

++
Before:
line number 432: command += u'MYSQL_PWD="$(cat)" '

After:
command += u'MYSQL_PWD="$(cat /etc/psa/.psa.shadow)" '
++

The above case is already reported as bug with ID PPS-158.
 
During the investigation I have found a misconfiguration in file /usr/local/psa/admin/plib/modules/panel-migrator/backend/lib/python/parallels/core/utils/database_utils.py .

++
Before:
line number 432: command += u'MYSQL_PWD="$(cat)" '

After:
command += u'MYSQL_PWD="$(cat /etc/psa/.psa.shadow)" '
++

The above case is already reported as bug with ID PPS-158.

so how do we make a fix?
 
i have checked the file.

Code:
command += u'MYSQL_PWD="$(cat /etc/psa/.psa.shadow)" '

The above already exist, so you are saying it should be double or what? from line 438 to 455.

Code:
command = ''
        stdin = None
        if server.host == 'localhost' and server.port == 3306:
            # a workaround for Plesk
            command += u'MYSQL_PWD="$(cat /etc/psa/.psa.shadow)" '
        elif server.password():
            command += u'MYSQL_PWD="$(cat)" '
            stdin = server.password()
        command += (
            u"mysqldump --no-defaults -h {src_host} -P {src_port} -u{src_admin} --quick --quote-names "
            u"--add-drop-table --default-character-set=utf8 --set-charset ")

        if _has_mysqldump_stored_procedures(server):
            command += u" --routines "

        command += u"{db_name} > {dump_tmpname}"
        options = self._get_dump_options(server, dump_filename)
        return command, options, {}, stdin
 
i have checked the file.

Code:
command += u'MYSQL_PWD="$(cat /etc/psa/.psa.shadow)" '

The above already exist, so you are saying it should be double or what? from line 438 to 455.

Code:
command = ''
        stdin = None
        if server.host == 'localhost' and server.port == 3306:
            # a workaround for Plesk
            command += u'MYSQL_PWD="$(cat /etc/psa/.psa.shadow)" '
        elif server.password():
            command += u'MYSQL_PWD="$(cat)" '

The second had only
Code:
  command += u'MYSQL_PWD="$(cat)" '
and need there also the
Code:
 cat /etc/psa/.psa.shadow
File, otherwise Migration failed with no access for admin@localhost
 
Back
Top