首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL:致命错误:无法打开和锁定特权表:表'mysql.host‘不存在

MySQL:致命错误:无法打开和锁定特权表:表'mysql.host‘不存在
EN

Server Fault用户
提问于 2011-07-17 05:49:40
回答 8查看 59.1K关注 0票数 9

我的本地MySQL 5.5服务器突然停止在Windows SP3上运行。

我还安装了WAMP Apache和WAMP MySQL,但是WAMP MySQL没有运行。错误日志显示:

  • 无法启动服务器:在TCP/IP端口上绑定:没有这样的文件或目录
  • 您是否已经在端口上运行另一个mysqld服务器: 3306?

我尝试将端口从3306更改为3307,但服务仍未启动,从而产生错误:

事件查看器显示:

  • 致命错误:无法打开和锁定特权表:表'mysql.host‘不存在
  • 无法打开mysql.plugin表。请运行mysql_upgrade来创建它。

显然,只有当服务器运行时,我才能运行mysql_upgrade。如果服务无法启动,我如何创建“mysql.host”?

我卸载并重新安装了MySQL服务器,在安装后的配置向导中,我收到了一个错误:服务无法启动。错误:0。

从这里开始我该怎么做?

EN

回答 8

Server Fault用户

发布于 2011-07-28 14:42:12

运行以下命令

代码语言:javascript
复制
mysql_install_db
票数 9
EN

Server Fault用户

发布于 2015-12-21 09:28:22

在windows上开始之前初始化mysql。

代码语言:javascript
复制
mysqld --initialize
票数 5
EN

Server Fault用户

发布于 2011-07-29 18:35:43

您需要做的第一件事是运行以下命令:

代码语言:javascript
复制
use mysql
show tables;

请注意不同之处

MySQL5.0在MySQL模式中有17个表

代码语言:javascript
复制
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| func                      |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| proc                      |
| procs_priv                |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

MySQL5.1在MySQL模式中有23个表

代码语言:javascript
复制
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

MySQL5.5在MySQL模式中有24个表

代码语言:javascript
复制
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

请注意,mysql.plugin在MySQL 5.0中不存在。可以推测,您以某种方式安装了MySQL 5.0,并使MySQL 5.5的重要表消失了。

这里有一些好消息。有件事你可以试试。

对于这个例子

  • ServerA是您的MySQL 5.5数据所在
  • ServerB是您将创建单独的MySQL 5.5环境的地方

这是你的舞步

  1. 关于ServerA,mkdir /root/myuser
  2. 在ServerA上,cp /var/lib/mysql/mysql/user.* /root/myuser/。
  3. 在MySQL上安装ServerB 5.5
  4. scp ServerB:/var/lib/mysql/mysql/* ServerA:/var/lib/mysql/mysql/。
  5. 在ServerA上,cp /root/myuser/user.* /var/lib/mysql/mysql/。
  6. 服务mysql启动

就这样。

如果您在Windows中运行此操作,则必须应用相同的原则。

试试看!!

更新2011-07-29 16:15

如果您的用户名具有DB特定的特权,下面是您的步骤

  1. 关于ServerA,mkdir /root/myuser
  2. 在ServerA上,cp /var/lib/mysql/mysql/user.* /root/myuser/。
  3. 在ServerA上,cp /var/lib/mysql/mysql/db.* /root/myuser/。
  4. 在MySQL上安装ServerB 5.5
  5. scp ServerB:/var/lib/mysql/mysql/* ServerA:/var/lib/mysql/mysql/。
  6. 在ServerA上,cp /root/myuser/* /var/lib/mysql/mysql/。
  7. 服务mysql启动
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/291126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档