У меня около 6000 таблиц InnoDB в 15 базах данных, и я использую innodb_file_per_table, Я обнаружил, что каждый раз, когда я перезагружаю сервер Ubuntu, MySQL не запускается с ошибкой ..
Version: '5.1.56-rel12.7-log' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Percona Server (GPL), 12.7, Revision 224)
111106 5:09:00 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./db1/tbl182.ibd
InnoDB: File operation call: 'open'.
Поскольку имя файла проблемной таблицы (например, tbl182.ibd) не всегда одно и то же, поэтому я подозреваю, что MySQL что-то делает со всеми таблицами?
Тем не мение, когда я перезапускаю с помощью команды (sudo /etc/init.d/mysql restart), MySQL может быть успешно запущен. Это очень странно!
Мой Env: версия MySQL: 5.1.56-rel12.7-log (Ubuntu 10.04 LTS + Percona)
Обновить:
Проблема решена удалением большого количества таблиц, поэтому это должно быть связано с ограничением файла, а не с разрешением.
Я уже изменил /etc/init.d/mysql на жестко заданное значение ulimit -n 50000, все еще не помогает при создании массивных таблиц.
Проблема не в ограничении количества дескрипторов файлов. Это будет ошибка 24, а не 13. Проблема в том, что написано: разрешения. Я видел это десятки раз, и даже когда люди думают, что все настроено правильно и имеет правильные разрешения, это разрешения ЕСТЬ, каждый раз, и кто-то всегда выясняет, что они что-то пропустили :) У вас либо права установлены неправильно или у вас есть что-то вроде следующего:
Вы «решили» проблему, удалив большое количество таблиц - я не думаю, что это действительно решение. Вероятно, вы просто удалили некоторые таблицы, для которых были установлены неправильные разрешения :)
Это проблема AppArmor? Это может быть что-то вроде запуска или остановки AppArmor между перезагрузкой и попыткой запустить его вручную.
Примерно в одно и то же время проверьте свой системный журнал.
Я бы порекомендовал вам проверить разрешение на запись для пользователя БД в каталог, где находятся ваши файлы БД.