MySQL:致命错误:无法打开和locking权限表:表'mysql.host'不存在

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

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

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

我尝试将端口从3306更改为3307,但该服务仍然无法启动,出现错误:

事件查看器显示:

  • 致命错误:无法打开和locking权限表:表'mysql.host'不存在
  • 无法打开mysql.plugin表。 请运行mysql_upgrade来创build它。

显然,如果服务器正在运行,我只能运行mysql_upgrade。 如果服务无法启动,如何创build“mysql.host”?

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

我怎么从这里开始?

运行以下命令

mysql_install_db 

在windows上启动之前初始化mysql。

 mysqld --initialize 

你需要做的第一件事是运行这些命令:

 use mysql show tables; 

请注意差异

MySQL 5.0在mysql模式中有17个表

 +---------------------------+ | 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 | +---------------------------+ 

MySQL 5.1在mysql模式中有23个表

 +---------------------------+ | 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 | +---------------------------+ 

MySQL 5.5在mysql模式中有24个表

 +---------------------------+ | 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是你将创build一个单独的MySQL 5.5环境的地方

这是你的步骤

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

而已。

如果你在Windows中运行这个,那么同样的原则也适用。

试一试 !!!

美国东部时间2011-07-29 16:15

如果您的用户名拥有“数据库特定权限”,请按照以下步骤操作

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

该服务无法启动。 错误:0。

将MySQLpath添加到环境variables。

它看起来像你已经有MySQL运行

尝试

 ps ax|grep mysql 

如果你看到一些输出,可能你需要停止它(或重新启动框)。

如果你没有看到任何输出,请尝试运行mysqld而不要demonize并查看输出。

我已经添加了一个窗口标签来帮助人们回答这个问题。

我的背景是不是窗户,但校长适用。

有没有一个MySQL进程已经运行? 如果是这样,你需要在卸载之前杀死它。 如果在尝试卸载/重新安装时仍然在运行,则会有进程和文件四处停止,从而无法完全卸载。

打开服务窗口,在名称中查找与mysql有关的任何内容,并确保它设置为不尝试重新启动。 然后打开正在运行的程序窗口的正在运行的进程选项卡(使用CTRL-ALT-DEL打开),并使用名称中的mysql查找并终止正在运行的进程。

如果你满意,没有更多的运行mysql进程,你可以继续。 你可能想重新启动,以确保没有更多的运行mysql进程挂起。

这时你应该可以重新安装并启动mysql。

运行mysql-test-run,你应该看到下面的输出:

 ./mysql-test-run Logging: ./mysql-test-run 2013-09-14 03:39:32 2566 [Warning] Setting lower_case_table_names=2 because file system for /var/folders/fr/sn4l2f393_v_ytcwkb0lx7_40000gp/T/_M2mZFQPjV/ is case insensitive 2013-09-14 03:39:32 2566 [Note] Plugin 'FEDERATED' is disabled. 2013-09-14 03:39:32 2566 [Note] Binlog end 2013-09-14 03:39:32 2566 [Note] Shutting down plugin 'MyISAM' 2013-09-14 03:39:32 2566 [Note] Shutting down plugin 'CSV' MySQL Version 5.6.13 Checking supported features... - SSL connections supported Using suites: main,sys_vars,binlog,federated,rpl,innodb,innodb_fts,perfschema,funcs_1,opt_trace,parts,auth_sec Collecting tests... - adding combinations for binlog - adding combinations for rpl Removing old var directory... Creating var directory '/Users/das/mysql/mysql-5.6.13-osx10.7-x86_64/mysql-test/var'... Installing system database... Using server port 50409 ============================================================================== TEST RESULT TIME (ms) or COMMENT -------------------------------------------------------------------------- 

如果您移动数据目标,则不仅需要赋予新的数据目录权限,还需要确保所有父目录都具有权限。

我将我的datadir移动到一个硬盘上,安装在Ubuntu上:

 /media/*user*/Data/ 

我的数据库数据库

我必须将权限设置为771到每个媒体, 用户和数据目录:

 sudo chmod 771 *DIR* 

如果这不起作用,另一种可以让mysql工作的方式是将/etc/mysql/my.cnf中的用户更改为root用户; 尽pipe从安全的angular度来看,这是毫无疑问的。