Please help with NextCloud restore

Hello everyone!
Can you please help me with restore that i’ve been battling for last 5 days I have a NC server that has been running pretty good for 3-4 years, no major issues. I need to migrate my NC instance off of it.

Currently I’m running in on Ubuntu 20.04 Server and nginx. NC version upgraded to 25.02. New server is Rocky 9 with apache (hope this is not a problem). On new server I installed 25.02 and went through initial setup, no issues.

I followed the official latest nc admin guide for migrating to new server, https://docs.nextcloud.com/server/latest/admin_manual/maintenance/migrating.html

I put both instances into maintenance mode and created mariadb backup and resync-ed user data over to new server.

I run restore of the db using

sudo mysql -h localhost -u ncadmin -p -e "DROP DATABASE nextcloud_db"
sudo mysql -h localhost -u ncadmin -p -e "CREATE DATABASE nextcloud_db"
sudo mysql -h localhost -uroot -p -e "GRANT ALL PRIVILEGES on nextcloud_db.* to ncadmin@localhost"
sudo mysql -h localhost -u ncadmin -p nextcloud_db < /tmp/nextcloud-sqlbkp_20221224.bak

Also i ran: sudo -u apache php /var/www/html/nextcloud/occ maintenance:data-fingerprint

i do not see an error after restore, but when i try to exit maintenance mode i get following errors. Its obviously permission issue after restore ( i think).

Doctrine\DBAL\Exception: Failed to connect to the database: An exception occurred in the driver: SQLSTATE[HY000] [1045] Access denied for user 'ncadmin'@'localhost' (using password: YES) in /var/www/html/nextcloud/lib/private/DB/Connection.php:139
Stack trace:
#0 /var/www/html/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1519): OC\DB\Connection->connect()
#1 /var/www/html/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1041): Doctrine\DBAL\Connection->getWrappedConnection()
#2 /var/www/html/nextcloud/lib/private/DB/Connection.php(261): Doctrine\DBAL\Connection->executeQuery()
#3 /var/www/html/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(345): OC\DB\Connection->executeQuery()
#4 /var/www/html/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php(281): Doctrine\DBAL\Query\QueryBuilder->execute()
#5 /var/www/html/nextcloud/lib/private/AppConfig.php(415): OC\DB\QueryBuilder\QueryBuilder->execute()
#6 /var/www/html/nextcloud/lib/private/AppConfig.php(180): OC\AppConfig->loadConfigValues()
#7 /var/www/html/nextcloud/lib/private/AppConfig.php(371): OC\AppConfig->getApps()
#8 /var/www/html/nextcloud/lib/private/legacy/OC_App.php(965): OC\AppConfig->getValues()
#9 /var/www/html/nextcloud/lib/private/Server.php(725): OC_App::getAppVersions()
#10 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(162): OC\Server->OC\{closure}()
#11 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(122): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#12 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(129): Pimple\Container->offsetGet()
#13 /var/www/html/nextcloud/lib/private/ServerContainer.php(136): OC\AppFramework\Utility\SimpleContainer->query()
#14 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(57): OC\ServerContainer->query()
#15 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(184): OC\AppFramework\Utility\SimpleContainer->get()
#16 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(162): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#17 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#18 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(129): Pimple\Container->offsetGet()
#19 /var/www/html/nextcloud/lib/private/ServerContainer.php(136): OC\AppFramework\Utility\SimpleContainer->query()
#20 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(57): OC\ServerContainer->query()
#21 /var/www/html/nextcloud/lib/private/Server.php(1119): OC\AppFramework\Utility\SimpleContainer->get()
#22 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(162): OC\Server->OC\{closure}()
#23 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(122): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#24 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(129): Pimple\Container->offsetGet()
#25 /var/www/html/nextcloud/lib/private/ServerContainer.php(136): OC\AppFramework\Utility\SimpleContainer->query()
#26 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(57): OC\ServerContainer->query()
#27 /var/www/html/nextcloud/lib/private/Server.php(2070): OC\AppFramework\Utility\SimpleContainer->get()
#28 /var/www/html/nextcloud/lib/private/Files/View.php(117): OC\Server->getLockingProvider()
#29 /var/www/html/nextcloud/lib/private/Server.php(462): OC\Files\View->__construct()
#30 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(162): OC\Server->OC\{closure}()
#31 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(122): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#32 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(129): Pimple\Container->offsetGet()
#33 /var/www/html/nextcloud/lib/private/ServerContainer.php(136): OC\AppFramework\Utility\SimpleContainer->query()
#34 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(57): OC\ServerContainer->query()
#35 /var/www/html/nextcloud/lib/private/Server.php(1472): OC\AppFramework\Utility\SimpleContainer->get()
#36 /var/www/html/nextcloud/lib/base.php(617): OC\Server->boot()
#37 /var/www/html/nextcloud/lib/base.php(1144): OC::init()
#38 /var/www/html/nextcloud/console.php(48): require_once('...')
#39 /var/www/html/nextcloud/occ(11): require_once('...')
#40 {main}[ncadmin@nextcloud ~]$ 

Can you please help with what i am doing wrong and resolve this

Are you having the same problem as this thread maybe?

If you are switching to Apache web server the files and folders in your data dir should have ownership of www-data with 600 permissions.

Could also try restarting your web and db servers.

Flex

Thanks Flex
It was all user error, actually 2 of them
#One: I thought i used same password for db user, but that was not the case. Second issue was that data path was not the same, i migrated from ngnix to apache. Soon as i fixed both of these errors, everything worked
PS config.php file from old server is a gold, if i did not append it i would get errors 500 on the server.