无法让 MySQL 的第二个实例工作

无法让 MySQL 的第二个实例工作

我已经有一个运行生产系统的 MySQL 实例。我想使用同一台机器执行其他 MySQL 操作而不触及另一个实例。我复制了 my.cnf 并重新路由了所有内容(端口、数据目录等)。使用新配置运行 mysqld_safe 立即停止。我查看了日志。一切看起来都很好,直到这一行:

[错误] 致命错误:无法打开和锁定权限表:表“mysql.host”不存在

因此,我运行mysql_install_db --datadir=my/new/db并得到以下结果:

正在安装 MySQL 系统表...
091120 19:01:24 [错误] /usr/libexec/mysqld: 未知选项 '-e'

系统表安装失败!

检查 opt/mysqld/data/ 中的日志以获取更多信息。
您可以尝试使用以下命令启动 mysqld 守护进程:
/usr/libexec/mysqld --skip-grant &
并使用命令行工具
/usr/bin/mysql 连接到 mysql
数据库并查看授权表:

外壳> /usr/bin/mysql -u root mysql
mysql>显示表

如果路径有问题,请尝试使用“mysqld --help”。使用 --log
为您提供 opt/mysqld/data/ 中的日志,这可能会有帮助。

有关 MySQL 的最新信息可在以下网址获取:
http://www.mysql.com
请查阅 MySQL 手册部分:“运行 mysql_install_db 时出现问题”,
以及描述您的操作系统问题的手册部分。
另一个信息来源是 MySQL 电子邮件档案。
请在给我们发送邮件之前检查以上所有内容!
如果您确实给我们发送邮件,您必须使用 /usr/bin/mysqlbug 脚本!

我没有在调用时提供 -e 选项。我该怎么办?

编辑:我按照错误中的说明操作,但“root”@“localhost”的访问被拒绝。服务器正在运行,相应的端口正在监听。执行跳过授权后,如何登录?

答案1

我不确定 -e 错误意味着什么,但如果遇到问题,您应该能够使用 --skip-grant-tables 选项重新启动 MySQL 并手动填充(和创建)表。

SQL 文件存在于 /usr/share/mysql 下,至少在 RHEL 5 上如此。它们按以下顺序安装:

  1. mysql_system_tables.sql
  2. mysql_system_tables_data.sql
  3. fill_help_tables.sql

请注意,有一个“sed”命令可以将这些文件中的“@current_hostname”替换为您的实际主机名。安装数据库脚本还使用“mkdir”创建测试和 mysql 数据库目录,并设置适当的所有权和权限。

答案2

mysql_install_db --datadir=my/new/db使用相对路径。当我使用绝对路径时,它可以工作。

相关内容