2017-02-21 3 views
1

У меня заканчивается место на разделе, где установлен MySQL, поэтому я попытался переместить мою самую большую базу данных в новый раздел и пометить ее в каталоге данных. Когда я пытаюсь использовать эту базу данных я получаю следующую ошибкуНе удается увидеть таблицы MySQL после перемещения базы данных dir с символической ссылкой

mysql> use fb20; 
Database changed 
mysql> show tables; 
ERROR 1018 (HY000): Can't read dir of './fb20/' (errno: 13) 

Я проверил, что символьные ссылки включены:

mysql> show variables like 'have_symlink'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| have_symlink | YES | 
+---------------+-------+ 

Все разрешения выглядеть правильно. Каталог данных MySQL является /data:

root> ll /data/ 
drwxr-x--- 243 mysql mysql  8192 Feb 21 08:02 mysql/ 

root> ll /data/mysql/ | grep fb20 
lrwxrwxrwx 1 mysql mysql   19 Feb 21 08:02 fb20 -> /sandata/mysql/fb20/ 

и новый каталог /sandata:

root> ll /sandata/ 
drwxr-x--- 3 mysql mysql    60 Feb 20 20:32 mysql/ 

root> ll /sandata/mysql/ 
total 360 
drwxr-x--- 3 mysql mysql  60 Feb 20 20:32 ./ 
drwxrwxr-x 35 root perma 4096 Feb 20 19:59 ../ 
drwx------ 2 mysql mysql 303104 Feb 15 12:20 fb20/ 

Не уверен, что я делаю неправильно.

+2

Исходя из моего прошлого опыта, мой Угадайте (и это просто предположение) состоит в том, что проблема связана с конфигурацией ** AppArmor ** (профиль AppArmor может разрешать доступ только для чтения/записи к соответствующим путям.) – spencer7593

+0

Спасибо! Это была проблема. – Sal

ответ

1

Основываясь на комментарии я добавил следующие строки в файл /etc/apparmor.d/usr.sbin.mysqld

/sandata/mysql/ r, 
/sandata/mysql/** rwk, 

, а затем перезарядил профиль (перезапуск AppArmor не сработал):

sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld 
+1

Альтернативой изменению профиля является добавление правила «псевдоним» ... http://wiki.apparmor.net/index.php/AppArmor_Core_Policy_Reference#Alias_and_rewrite_rules – spencer7593

Смежные вопросы