突然间,我的本地 MySQL 5.5 服务器在 Windows XP SP3 上停止运行。
我还安装了 WAMP Apache 和 WAMP MySQL,但 WAMP MySQL 没有运行。错误日志显示:
- 无法启动服务器:绑定在 TCP/IP 端口上:没有此文件或目录
- 您是否已经在端口 3306 上运行另一个 mysqld 服务器?
我尝试将端口从 3306 更改为 3307,但服务仍然无法启动,并出现错误:
事件查看器显示:
- 致命错误:无法打开和锁定权限表:表'mysql.host'不存在
- 无法打开 mysql.plugin 表。请运行 mysql_upgrade 来创建它。
显然,我只能在服务器运行时运行 mysql_upgrade。如果服务无法启动,我该如何创建“mysql.host”?
我卸载了 MySQL 服务器并重新安装它,在安装后的配置向导中,我收到一个错误:无法启动服务。错误:0。
我下一步该怎么做?
答案1
运行以下命令
mysql_install_db
答案2
在 Windows 上启动之前初始化 mysql。
mysqld --initialize
答案3
您需要做的第一件事是运行以下命令:
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 是创建单独 MySQL 5.5 环境的地方
以下是您的步骤
- 在 ServerA 上,mkdir /root/myusers
- 在 ServerA 上,cp /var/lib/mysql/mysql/user.* /root/myusers/。
- 在ServerB上安装MySQL 5.5
- scp 服务器B:/var/lib/mysql/mysql/* 服务器A:/var/lib/mysql/mysql/。
- 在 ServerA 上,cp /root/myusers/user.* /var/lib/mysql/mysql/。
- 服务 mysql 启动
就是这样。
如果您在 Windows 中运行它,则必须应用相同的原则。
试一试 !!!
更新时间:2011-07-29 16:15 EDT
如果你的用户名有数据库特定权限,请按照以下步骤操作
- 在 ServerA 上,mkdir /root/myusers
- 在 ServerA 上,cp /var/lib/mysql/mysql/user.* /root/myusers/。
- 在 ServerA 上,cp /var/lib/mysql/mysql/db.* /root/myusers/。
- 在ServerB上安装MySQL 5.5
- scp 服务器B:/var/lib/mysql/mysql/* 服务器A:/var/lib/mysql/mysql/。
- 在 ServerA 上,cp /root/myusers/* /var/lib/mysql/mysql/。
- 服务 mysql 启动
答案4
看起来你已经在运行 mysql
尝试
ps ax|grep mysql
如果您看到一些输出,可能您需要停止它(或重新启动盒子)。
如果您没有看到任何输出,请尝试运行不使用 demonize 的 mysqld 并查看输出。