Я установил 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: завершение работы завершено
В нем говорится, что разрешение отклонено, однако я, кажется, установил правильные разрешения.
/usr/local/mysql
и/tmp
. Нужно быть как минимум 775. 2. Разрешение для каталога базы данных mysql в/var/lib/
папке должно бытьmysql:root
(chown mysql:root mysql
)/etc/apparmor.d/usr.sbin.mysqld
Здесь есть сравнение между старой и новой версией: bugs.launchpad.net/ubuntu/+source/mysql-5.1/+bug/876268/…Ответы:
Посмотрев на эту строку в следующей строке в журнале, вы увидите, что Apparmor запрещает доступ.
Чтобы разрешить это, добавьте файл
/etc/apparmor.d/local/usr.sbin.mysqld
с записью ниже и перезапустите MySQL.Спасибо Rinzwind за указание на это.
источник