我已经将单独的硬盘安装到 /mnt/temp,并更改数据目录指向这一点。我在 apparmor 中添加了正确的设置,并使用 mysql 工作了几个小时。在添加performance_schema
到我的cnf并尝试重新启动 mysql,但出现错误:
[Warning] Can't create test file /mnt/temp/some_dir/blah.lower-test
...
[ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
...
从那时起,我chmod -R 777 /mnt/temp
关闭了应用程序保护,重新安装了分区,手动终止了任何与分区交互的进程,并将其performance_schema
从我的配置中删除。
有什么建议么?
答案1
如果您想要重新定位 MySQL 中的数据目录(在此示例中为/data/directory
),并且 AppArmor 不允许您这样做,请在底部添加以下两行/etc/apparmor.d/local/usr.sbin.mysqld
:
/data/ r,
/data/** rwk,
...然后重新加载 AppArmor 配置文件:
sudo service apparmor reload
答案2
我也遇到了同样的问题,并认为这是一个所有权问题(这也让我产生了 AppArmor 存在问题的错觉)。
也许你可以尝试这个(/var/lib/mysql
如果它与你的不匹配,请更改):
sudo chown -R mysql /var/lib/mysql
sudo chgrp -R mysql /var/lib/mysql
需要说明的是,自旧版 Ubuntu 以来,MySQL 的用户 ID 和组 ID 发生了变化。以前的用户 ID 和组 ID 现在看起来像hplip
和pulse-access
。由于数据目录对我来说是挂载绑定(在另一个分区上),因此它仍然具有这些以前的 ID,其分配已更改。