Access denied to database when using owncloud as docker container


#1

Issue

I just had to restart my server, had to restart owncloud and its database, and now I’m getting a 500 error when trying to connect to owncloud. The owncloud logs show the following error:

owncloud_1     | [Thu Jun 28 18:00:52.317889 2018] [:error] [pid 26] [client 82.4.110.98:62450] PHP Fatal error:  Uncaught exception 'Doctrine\\DBAL\\DBALException' with message 'Failed to connect to the database: An exception occured in driver: SQLSTATE[HY000] [1045] Access denied for user 'oc_myusername'@'172.20.0.3' (using password: YES)' in /var/www/html/lib/private/DB/Connection.php:58\nStack trace:\n#0 /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(429): OC\\DB\\Connection->connect()\n#1 /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(389): Doctrine\\DBAL\\Connection->getDatabasePlatformVersion()\n#2 /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(328): Doctrine\\DBAL\\Connection->detectDatabasePlatform()\n#3 /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(621): Doctrine\\DBAL\\Connection->getDatabasePlatform()\n#4 /var/www/html/lib/private/DB/Connection.php(141): Doctrine\\DBAL\\Connection->setTransactionIsolation(2)\n#5 /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/DriverManager.php(172): OC\\DB\\Connection->__construct(Array, Object(Doctrine in /var/www/html/lib/private/DB/Connection.php on line 58

Background

I run owncloud in a docker container, using mariadb as its database. Here’s my docker-compose.yml:

version: '2'

services:
  owncloud:
    image: owncloud:9.1
    container_name: fullbackup_owncloud
    links:
      - owncloud_db
    ports:
      - portnumber:portnumber
    volumes:
      - "~/fullbackup/data:/var/www/html/data"
      - "~/fullbackup/owncloud_config:/var/www/html/config"
    restart: always

  owncloud_db:
    image: mariadb
    container_name: fullbackup_db
    environment:
      MYSQL_ROOT_PASSWORD: apassword
    restart: always

In my host’s ~/fullbackup/owncloud_config I have the following config.php:

<?php
$CONFIG = array (
  'instanceid' => 'someid',
  'passwordsalt' => 'somesalt',
  'secret' => 'somesecret',
  'trusted_domains' => 
  array (
    0 => 'myip',
  ),
  'datadirectory' => '/var/www/html/data',
  'overwrite.cli.url' => 'myip:someport',
  'dbtype' => 'mysql',
  'version' => '9.1.5.2',
  'dbname' => 'fullbackup_database_name',
  'dbhost' => 'owncloud_db',
  'dbtableprefix' => 'oc_',
  'dbuser' => 'oc_myusername',
  'dbpassword' => 'anotherpassword',
  'logtimezone' => 'UTC',
  'installed' => true,
  'filelocking.enabled' => false,
);

I’ve been able to thus run owncloud smoothly for using just docker-compose up

What I’ve tried

I’ve tried to follow the advice here:

$ docker exec -ti fullbackup owncloud_db
$ mysql_upgrade --force -u root -p
Phase 1/6: Checking and upgrading mysql database
Processing databases
mysql
mysql.column_stats                                 OK
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.event                                        OK
mysql.func                                         OK
mysql.gtid_slave_pos                               OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.host                                         OK
mysql.index_stats                                  OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.roles_mapping                                OK
mysql.servers                                      OK
mysql.table_stats                                  OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
Phase 2/6: Fixing views
Phase 3/6: Running 'mysql_fix_privilege_tables'
Phase 4/6: Fixing table and database names
Phase 5/6: Checking and upgrading tables
Processing databases
information_schema
performance_schema
Phase 6/6: Running 'FLUSH PRIVILEGES'
OK

But I get the same error.

I’ve also seen the advice here:

But this won’t let me use the pre-existing db user.

Any thoughts on what I can do to fix this?

Thanks!