Я установил MySQL сервер 5.5 на Ubuntu 12.04. Я пытаюсь запустить сервер MySQL с другим файлом sock. По умолчанию MySQL работает на /var/run/mysqld/mysqld.sock.
Я пытаюсь запустить тот же сервер на /var/run/mysqld/mysqld1.sock.
Для этого я сделал следующие изменения:
- Изменения в /etc/mysql/my.cnf
[Клиент]
порт = 3306
socket = /var/run/mysqld/mysqld1.sock
[Mysqld_safe]
socket = /var/run/mysqld/mysqld1.sock
хороший = 0
[ТуздЫ]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
** сокет = /var/run/mysqld/mysqld1.sock**
порт = 3306
basedir = / usr
datadir = / var / lib / mysql
tmpdir = / tmp
lc-messages-dir = / usr / share / mysql
Я также добавил следующую строку в /etc/apparmor.d/usr/sbin.mysqld
/var/run/mysqld/mysqld1.sock w,
/var/run/mysqld/mysqld[1-9].sock w,
Я также изменил владельца для каталога / var / run / mysqld на пользователя mysql.
ls -lA / var / run / | grep mysqld
drwxrwxrwx 2 mysql mysql 40 дек. 31 17:24 mysqld
Однако, когда я пытаюсь запустить сервер MySQL, я получаю следующую ошибку (как пользователь root)
$ mysqld --user = mysql --verbose
121231 18:40:56 [Примечание] Плагин «FEDERATED» отключен.
121231 18:40:56 InnoDB: куча памяти InnoDB отключена
121231 18:40:56 InnoDB: мьютексы и rw_locks используют атомарные встроенные функции GCC
121231 18:40:56 InnoDB: сжатые таблицы используют zlib 1.2.3.4
121231 18:40:56 InnoDB: Инициализация пула буферов, размер = 128.0M
121231 18:40:56 InnoDB: завершена инициализация буферного пула
121231 18:40:56 InnoDB: самый высокий поддерживаемый формат файла - Barracuda.
121231 18:40:57 InnoDB: Ожидание запуска фоновых потоков
121231 18:40:58 InnoDB: 1.1.8 запущен; регистрационный номер 1595685
121231 18:40:58 [Примечание] Имя хоста сервера (bind-адрес): '127.0.0.1'; порт: 3306
121231 18:40:58 [Примечание] - «127.0.0.1» преобразуется в «127.0.0.1»;
121231 18:40:58 [Примечание] Серверный сокет создан на IP: «127.0.0.1».
** `121231 18:40:58 [ОШИБКА] Не удается запустить сервер: привязка к сокету Unix: разрешение запрещено` **
121231 18:40:58 [ОШИБКА] У вас уже есть другой сервер mysqld, работающий на сокете:
/var/run/mysqld/mysqld1.sock?
121231 18:40:58 [ОШИБКА] Отмена **
121231 18:40:58 InnoDB: начало выключения ...
121231 18:40:58 InnoDB: завершение работы завершено; регистрационный номер 1595685
121231 18:40:58 [Примечание] mysqld: завершение работы завершено
Если я запускаю сервер с файлом сокета по умолчанию, я могу запустить сервер. Я погуглил об этой проблеме, но нашел только решения, предлагающие проблему с разрешениями. Однако разрешения, кажется, в порядке. Некоторые полагают, что причиной может быть AppArmor, но я тоже это проверил - фрагмент вставлен выше.
Может кто-нибудь дать подсказки?
[РЕДАКТИРОВАТЬ]
Я вижу следующий вывод в /var/log/syslog.
2 января 12:09:34 praveshp-lt mysqld: 130102 12:09:34 [Примечание] Плагин 'FEDERATED' отключен. 2 января 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: куча памяти InnoDB отключена 2 января 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: мьютексы и rw_locks используют атомарные встроенные функции GCC 2 января 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: в сжатых таблицах используется zlib 1.2.3.4 2 января 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Инициализация пула буферов, размер = 128.0M 2 января 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: завершена инициализация пула буферов 2 января 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: самый высокий поддерживаемый формат файла - Barracuda. 2 января 12:09:35 praveshp-lt mysqld: 130102 12:09:35 InnoDB: Ожидание запуска фоновых потоков 2 января 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: 1.1.8 запущено; регистрационный номер 1595685 2 января 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Примечание] Имя хоста сервера (bind-адрес): '127.0.0.1'; порт: 3307 2 января 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Примечание] - «127.0.0.1» преобразуется в «127.0.0.1»; Янв 2 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Примечание] Серверный сокет, созданный для IP: «127.0.0.1». 2 января 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ОШИБКА] Не удается запустить сервер: привязка к сокету unix: разрешение запрещено 2 января 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ОШИБКА] У вас уже есть другой сервер mysqld, работающий на сокете: /var/run/mysqld/mysqld1.sock? 2 января 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ОШИБКА] Отмена 2 января 12:09:36 praveshp-lt mysqld: 2 января 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: запуск выключения ... 2 января 12:09:36 ядро praveshp-lt: [7060.098580] type = 1400 аудит (1357108776.036: 33): apparmor = операция "DENIED" = "mknod" parent = 6702 profile = "/ usr / sbin / mysqld" name = "/run/mysqld/mysqld1.sock" pid = 7039 comm = "mysqld" required_mask = "c" denied_mask = "c" fsuid = 116 ouid = 116 2 января 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: завершение работы завершено; регистрационный номер 1595685 2 января 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Примечание] / usr / sbin / mysqld: завершение работы завершено
В нем говорится, что разрешение отклонено, однако я, кажется, установил правильные разрешения.
/etc/apparmor.d/usr.sbin.mysqldЗдесь есть сравнение между старой и новой версией: bugs.launchpad.net/ubuntu/+source/mysql-5.1/+bug/876268/…
/usr/local/mysqlи/tmp. Нужно быть как минимум 775. 2. Разрешение для каталога базы данных mysql в/var/lib/папке должно бытьmysql:root(chown mysql:root mysql)