Назад | Перейти на главную страницу

MySQL удалил файл sock и пожаловался на разрешение для него

Это проблема, которая действительно сводит меня с ума сегодня:

По сути, я скомпилировал MySQL из исходников (MySQL 5.1.14 на Ubuntu 9.04 на машине ARM), и вот что произошло, когда я попытался запустить его:

/etc/init.d/mysql start
Starting MySQL.. * Manager of pid-file quit without updating file.

Копаясь в журнале ошибок, я вижу следующее:

110826 18:00:21 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
110826 18:00:22 [ERROR] Can't start server : Bind on unix socket: Permission denied
110826 18:00:22 [ERROR] Do you already have another mysqld server running on socket: /tmp/mysql.sock ?
110826 18:00:22 [ERROR] Aborting

110826 18:00:22 [Note] /usr/local/mysql/libexec/mysqld: Shutdown complete

110826 18:00:22 mysqld_safe mysqld from pid file /usr/local/mysql/var/Serv.pid ended

Вот что я пытался сделать:

touch mysql.sock
chown mysql:mysql mysql.sock
chmod 1777 mysql.sock

И вроде все нормально:

ls -la | grep mysql.sock
-rwxrwxrwt  1 mysql mysql        0 2011-08-26 18:02 mysql.sock

Но угадайте, что каждый раз, когда я пытался перезапустить mySQL, возникала одна и та же ошибка, и кажется, что по какой-то причине файл sock пропал.

Я запускал весь процесс как root, поэтому разрешение не должно быть проблемой.

Любое предложение? Спасибо!

Настроен ли Ubuntu для использования инфраструктуры безопасности, такой как SELinux, SMACK или AppArmor, которую необходимо изменить, чтобы позволить запускать ваш собственный экземпляр mysql? Принадлежат ли файлы базы данных, которые нужны mysql, пользователю mysql, поскольку mysql при запуске отказывается от привилегий root?

В качестве побочного примечания ваша попытка создать файл сокета неверна, вы создали обычный файл, а не сокет, вам нужно использовать mksock для создания файла сокета в файловой системе.

Вам действительно не следует создавать этот файл вручную, это не обычный файл, это именованный сокет, и он должен быть указан в ls вывести что-то вроде srwxrwxrwx 1 mysql mysql 0 Aug 20 23:49 mysql.sock=. Вы уверены, что другой mysqld не запущен на том же сокете?

chmod 1777 /tmp и попробуй еще раз.