获取恢复的 db 文件以在重建的服务器上工作

Al_*_*Al_ 5 mysql restore

我不得不重建我的服务器并试图将数据库文件从旧驱动器复制到 /var/lib/mysql/。我已经重新启动了 apache 并运行了“show databases”,这列出了所有的数据库。我已经输入了这些数据库之一“joomla”并运行“show tables”,这会显示我期望的所有表。

但是,尝试运行诸如 'SELECT * from bsf_session' 之类的查询会出现错误:

ERROR 1146 (42S02): Table 'joomla.bsf_sessions' doesn't exist
Run Code Online (Sandbox Code Playgroud)

检查我得到的表:

mysql> check table bsf_seminar;
+--------------------+-------+----------+---------------------------------------------------------+
| Table              | Op    | Msg_type | Msg_text                                                |
+--------------------+-------+----------+---------------------------------------------------------+
| joomla.bsf_seminar | check | Error    | Can't find file: './joomla/bsf_seminar.frm' (errno: 13) |
| joomla.bsf_seminar | check | error    | Corrupt                                                 |
+--------------------+-------+----------+---------------------------------------------------------+
2 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

当我复制文件时,我更改了权限以匹配 mysql 表的权限,但是我无法更改所有权,文件当前看起来像这样(ls -g):

-rw-rw---- 1 root   8842 2012-02-23 09:54 bsf_session.frm
-rw-rw---- 1 root 271012 2012-02-23 09:54 bsf_session.MYD
-rw-rw---- 1 root  25600 2012-02-23 09:54 bsf_session.MYI
Run Code Online (Sandbox Code Playgroud)

我试过跑

chown mysql bsf_session.frm
Run Code Online (Sandbox Code Playgroud)

但这没什么区别。我不知道这是否与主要问题有关。

我真的很感激你能提供的任何帮助......

我在stackoverflow上问过这个问题,并被推荐在这里问它......

Der*_*ney 2

如果用户认为MySQL服务器没有读写该文件的权限,那么服务器将无法识别该表。通常服务器在“mysql”用户下运行。

在尝试更改所有权之前,我会首先停止您的 mysql 实例。

完成后,然后(从非 root 用户)sudo chown mysql bsf_session.*在目录中执行文件操作。

您也可以尝试更改组 ( sudo chgrp mysql bsf_session.*),但是最好的选择是让文件与服务器具有相同的所有者。

如果您没有 sudo 权限或 root 访问权限,那么您将需要联系拥有该权限的人,让他们更改所有权。