我正在尝试为mysql(OS Ubuntu 12.04)设置不同的数据目录,例如/mnt/mysql/mysql
。
我正在执行:
sudo mysql_install_db --user=mysql --datadir=/mnt/mysql/mysql
sudo /etc/init.d/mysql start
mysql -uroot
问题是SHOW DATABASES;
提供了ERROR 1018 (HY000): Can't read dir of '.' (errno: 13)
,但SHOW TABLES FROM mysql
之类的查询工作正常。
为什么?
答案 0 :(得分:4)
我遇到了完全相同的问题。 mysqldata文件夹的所有者和权限是正确的。但它仍然说:mysql:ERROR 1018(HY000):无法读取'的目录。'
我一整天都在苦苦挣扎。最后,我解决了这个问题。
请检查/etc/apparmor.d/usr.sbin.mysqld
文件。
它应该是/data/mysql/ r
。我错过了一个正斜杠。
我改变之后(vi /etc/apparmor.d/usr.sbin.mysqld)
/data/mysql r,
/data/mysql/** rwk,
到(不要错过斜线)
/data/mysql/ r,
/data/mysql/** rwk,
然后重启AppArmor和mysql。
sudo service apparmor restart
sudo service mysql restart
之后错误消失了!
答案 1 :(得分:1)
这似乎是一个许可问题。可能的解决方法:
chown -R mysql.mysql /mnt/mysql/mysql