简体   繁体   English

无法重新启动 MySQL Docker 容器,出现“无法打开 mysql.plugin 表”和“表 'mysql.user' 不存在”等错误

[英]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.服务器空间不足后,Docker MySQL 的文件似乎已损坏。

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 .尝试重新启动mysql:5.6容器时,出现错误[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist

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

因此需要docker-compose rm mysql删除断开的连接,然后再次启动容器。

I have meet same issue, in my case, it is since I have create db dir for volume before I run cmd 'docker-compose up', after I delete image and delete db dir I have created, it will ok below is my docker.yml我遇到了同样的问题,就我而言,这是因为我在运行 cmd 'docker-compose up' 之前已经为卷创建了 db dir,在我删除图像并删除我创建的 db dir 之后,下面是我的 docker .yml

volumes: - "./db:/var/lib/mysql"卷:-“./db:/var/lib/mysql”

we should notice that not to create db dir before rum cmd.我们应该注意不要在 rum cmd 之前创建 db 目录。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Docker-mysqld:表'mysql.plugin'不存在 - Docker - mysqld: Table 'mysql.plugin' doesn't exist Docker中的Bootstraping Percona Xtradb Cluster出现错误:无法打开和锁定特权表:表'mysql.user'不存在 - Bootstraping Percona Xtradb Cluster in Docker gives the error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist 无法打开和锁定权限表:表 'mysql.user' 不存在 - Can't open and lock privilege tables: Table 'mysql.user' doesn't exist 表 'mysql.user' 不存在:错误 - Table 'mysql.user' doesn't exist:ERROR 设置 MySQL 时出错:表 'mysql.plugin' 不存在 - Error setting up MySQL: Table 'mysql.plugin' doesn't exist 无法打开mysql.plugin表。 请运行mysql_upgrade来创建它 - Can't open the mysql.plugin table. Please run mysql_upgrade to create it 生成根密码时发生mysql错误,表'mysql.user'不存在' - mysql error at root password generation, Table 'mysql.user' doesn't exist' MariaDB 10.4.10 错误 1146 (42S02):表 'mysql.user' 不存在 - MariaDB 10.4.10 ERROR 1146 (42S02): Table 'mysql.user' doesn't exist 服务mysql启动在我的日志文件中留下“特权表:表'mysql.user'不存在”并且服务器失败 - service mysql start leaves “privilege tables: Table 'mysql.user' doesn't exist” in my log file and the server fails mySQL上的mysql.user表 - mysql.user table on mySQL
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM