Cannot restart the MySQL Docker container, gives errors like `Can't open the mysql.plugin table` and `Table 'mysql.user' doesn't exist`

After running out of space on the server, it seems that the file of Docker MySQL got corrupted.

When trying to relaunch mysql:5.6 container I get the error [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist.

  • Cant add Docker Support Visual Studio 2017
  • docker userdefined network - no connection to the outside world
  • Establishing configurations in new containers
  • AWS ECR Authentication Test
  • Image push docker Registry Fails
  • docker push failed: net/http: TLS handshake timeout
  • I cannot locate the file that is corrupted, and possibly delete it or fix the permissions.

    Here is a full error output:

    $ docker start -a  mysql_1
    2016-11-23 10:22:17 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
    2016-11-23 10:22:17 0 [Note] mysqld (mysqld 5.6.34) starting as process 1 ...
    2016-11-23 10:22:17 1 [Note] Plugin 'FEDERATED' is disabled.
    mysqld: Table 'mysql.plugin' doesn't exist
    2016-11-23 10:22:17 1 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
    2016-11-23 10:22:17 1 [Note] InnoDB: Using atomics to ref count buffer pool pages
    2016-11-23 10:22:17 1 [Note] InnoDB: The InnoDB memory heap is disabled
    2016-11-23 10:22:17 1 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
    2016-11-23 10:22:17 1 [Note] InnoDB: Memory barrier is not used
    2016-11-23 10:22:17 1 [Note] InnoDB: Compressed tables use zlib 1.2.8
    2016-11-23 10:22:17 1 [Note] InnoDB: Using Linux native AIO
    2016-11-23 10:22:17 1 [Note] InnoDB: Using CPU crc32 instructions
    2016-11-23 10:22:17 1 [Note] InnoDB: Initializing buffer pool, size = 128.0M
    2016-11-23 10:22:17 1 [Note] InnoDB: Completed initialization of buffer pool
    2016-11-23 10:22:17 1 [Note] InnoDB: Highest supported file format is Barracuda.
    2016-11-23 10:22:17 1 [Note] InnoDB: Log scan progressed past the checkpoint lsn 49463
    2016-11-23 10:22:17 1 [Note] InnoDB: Database was not shutdown normally!
    2016-11-23 10:22:17 1 [Note] InnoDB: Starting crash recovery.
    2016-11-23 10:22:17 1 [Note] InnoDB: Reading tablespace information from the .ibd files...
    2016-11-23 10:22:17 1 [Note] InnoDB: Restoring possible half-written data pages
    2016-11-23 10:22:17 1 [Note] InnoDB: from the doublewrite buffer...
    InnoDB: Doing recovery: scanned up to log sequence number 1600607
    2016-11-23 10:22:17 1 [Note] InnoDB: Starting an apply batch of log records to the database...
    InnoDB: Progress in percent: 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
    InnoDB: Apply batch completed
    2016-11-23 10:22:18 1 [Note] InnoDB: 128 rollback segment(s) are active.
    2016-11-23 10:22:18 1 [Note] InnoDB: Waiting for purge to start
    2016-11-23 10:22:18 1 [Note] InnoDB: 5.6.34 started; log sequence number 1600607
    2016-11-23 10:22:18 1 [Note] Server hostname (bind-address): '*'; port: 3306
    2016-11-23 10:22:18 1 [Note] IPv6 is available.
    2016-11-23 10:22:18 1 [Note]   - '::' resolves to '::';
    2016-11-23 10:22:18 1 [Note] Server socket created on IP: '::'.
    2016-11-23 10:22:18 1 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
    

  • How to mount host directory in docker container?
  • Load Postgres dump after docker-compose up
  • Import data.sql MySQL Docker Container
  • Docker Swarm shared volumes
  • IBM Container - su :cannot create child process: Resource temporarily unavailable
  • How to add already existing ECS Instance to newly created ECS Cluster
  • One Solution collect form web for “Cannot restart the MySQL Docker container, gives errors like `Can't open the mysql.plugin table` and `Table 'mysql.user' doesn't exist`”

    So docker-compose rm mysql was needed to remove the broken connection, and then launch again the container.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.