Smart Update error - Failed to set permissions for database user
I moved a site to a new VPS last month (both with WHM/cPanel), which included an update from PHP 7.4 to 8.4 and then updates to the WP core, theme, and plugins. I enabled Smart Update and auto updates.
Today I had an auto-email from the server saying:
Smart Update could not be completed automatically. Please try running the update manually. Details: Failed to clone the installation: 'Failed to set permissions for database user: The request failed. (Error ID: a2n3z3) Then I discovered that there were 4 new databases with 0 bytes and 4 new users added, so presumably this has failed 4 times (guessing once a week).
I deleted those stale DBs and users, then as a test tried to add a new user myself. I could add the user in cPanel, but when I tried to add it to the main DB nothing happened; I had the progress circle for a few seconds, then it went away without adding the user.
I added the user to the database manually in CLI then added it to wp-config.php and it worked, but cPanel doesn't show the username being added to the database.
cPanel's error_log shows 265 lines after running Smart Update. I don't want to post the whole thing unless you all say you need it, but what I thought was relevant were the first few:
[2026-09-22 00:09:06 -0400] warn [cpmysql] Error from MySQL query: Cpanel::Exception::Database::Error/(XID 4abqfx) The system received an error from the “MySQL” database “mysql”: ER_PASSWORD_NO_MATCH (Can't find any matching row in the user table) at /usr/local/cpanel/Cpanel/DBI.pm line 200. QUERY: ALTER USER IF EXISTS 'example'@'localhost' IDENTIFIED WITH 'mysql_native_password' AS '<foo>'; GRANT USAGE ON *.* TO 'example'@'localhost'; ALTER USER IF EXISTS 'example'@'my.server.net' IDENTIFIED WITH 'mysql_native_password' AS '<foo>'; GRANT USAGE ON *.* TO 'example'@'my.server.net' [2026-09-22 00:09:06 -0400] warn [cpmysql] Error from MySQL query: Cpanel::Exception::Database::Error/(XID 6qvnq4) The system received an error from the “MySQL” database “mysql”: ER_PASSWORD_NO_MATCH (Can't find any matching row in the user table) at /usr/local/cpanel/Cpanel/DBI.pm line 200. I confirmed that the password (authentication_string?) printed here (represented by <foo>) matches what's in mysql.user
Finally, I see that 'example'@'localhost' and 'example'@'123.45.67.89' show GRANT USAGE ON *.*, but 'example'@'my.server.net' says There is no such grant defined for user 'example' on host 'my.server.net'. I tried adding grants to that one, but SHOW GRANTS still says the same thing. Is that relevant?
If not then I'm out of ideas. Any suggestions?
[link] [comments]