【问题标题】:myisampack no access to data filesmyisampack 无法访问数据文件
【发布时间】:2021-12-26 07:23:06
【问题描述】:

在 AWS 上全新安装 Ubuntu 20.04。

在/home/ubuntu/dev下使用ubuntu登录。

已创建数据库 myFiles。

添加了带有静态数据的MYISAM表并尝试了......

myisampack /var/lib/mysql/myFiles/table01.MYI

这失败了:

var/lib/mysql/myFiles/table01.MYI 打开时出现错误 13

权限是:

-rw-r----- 1 mysql mysql 2340864 Nov 15 00:25 table01.MYI

父文件夹:

drwxr-x---  2 mysql mysql     4096 Nov 15 00:25  myFiles 
.. and ..
drwx------  7 mysql     mysql     4096 Nov 15 00:05 mysql

所以我失去了 /var/lib/mysql 的权限

执行此操作的规范方法是什么?

我已尝试将 ubuntu 添加到 mysql 组(组至少已读取,并在文件夹上执行)。

以 sudo 运行会给出“140”(错误的创建选项)。

我已尝试从 /opt 文件夹运行。

我知道这可能是一个晦涩难懂的用法,但我希望有人已经为此付出了汗水。

我不想对树进行 chmod,因为可能会仔细考虑权限。

【问题讨论】:

  • 请注意,我正在对“不再开箱即用”的历史脚本进行故障排除,因此这在过去确实有效。

标签: mysql myisam


【解决方案1】:

A 计划:

$ sudo myisampack /var/lib/mysql/myFiles/table01.MYI

B计划:

$ su mysql myisampack /var/lib/mysql/myFiles/table01.MYI

C 计划:

不要使用 MyISAM;那么你就不需要myisampack了。使用 InnoDB。

D 计划:

在连接到服务器时运行OPTIMIZE TABLE

C 是首选方法。

【讨论】:

  • 赞成。看看隔壁的文件模式应该是 774,所以我需要看看得到 640 的根本原因。我强迫它们到 774 并将它们留在那里。 sudo 用于包,检查不需要。我们节省空间并使用打包的 myisam 从这些静态数据中获得事实上的 RO,是的,我们会考虑使用 innoDB。
  • @mckenzm - 755 用于目录 - 为所有人提供读取和搜索(“x”部分)。如果您不是所有者或在同一个“组”中,则文件为 644,并且只需要读取权限。
  • 我选择它是因为相邻的数据库正在使用它。我已经回去检查“mantis”的旧软件包安装,它混合了 660 和 640,似乎以 MyISAM 为中心。我有一种感觉,我们只是要将这些移动到 InnoDB 并限制访问并占用空间。
  • 是的,转换。通常 InnoDB 占用 2x-3x 的空间。
猜你喜欢
  • 2020-11-20
  • 1970-01-01
  • 2021-08-06
  • 1970-01-01
  • 2020-11-19
  • 2020-04-07
  • 1970-01-01
相关资源
最近更新 更多