Не может запустить сервер MySQL, если .sock файл изменяется в/etc/mysql/my.cnf

Я установил сервер MySQL 5.5 на Ubuntu 12.04. Я пытаюсь запустить сервер MySQL на другом файле носка. MySQL по умолчанию работает на/var/run/mysqld/mysqld.sock.

Я пытаюсь выполнить тот же сервер на/var/run/mysqld/mysqld1.sock.

Для этого я внес следующие изменения:

  1. Изменения в/etc/mysql/my.cnf
[client]
    port        = 3306
    socket      = /var/run/mysqld/mysqld1.sock

[mysqld_safe]
    socket      = /var/run/mysqld/mysqld1.sock
    nice        = 0

[mysqld]
    user        = mysql
    pid-file    = /var/run/mysqld/mysqld.pid
    **socket        = /var/run/mysqld/mysqld1.sock**
    port        = 3306
    basedir     = /usr
    datadir     = /var/lib/mysql
    tmpdir      = /tmp
    lc-messages-dir = /usr/share/mysql
  1. Я также добавил следующую строку к/etc/apparmor.d/usr/sbin.mysqld

    /var/run/mysqld/mysqld1.sock w,

    /var/run/mysqld/mysqld [1-9] .sock w,

  2. Я также изменил владение для каталога,/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 [Note] Plugin 'FEDERATED' is disabled.
    121231 18:40:56 InnoDB: The InnoDB memory heap is disabled
    121231 18:40:56 InnoDB: Mutexes and rw_locks use GCC atomic builtins
    121231 18:40:56 InnoDB: Compressed tables use zlib 1.2.3.4
    121231 18:40:56 InnoDB: Initializing buffer pool, size = 128.0M
    121231 18:40:56 InnoDB: Completed initialization of buffer pool
    121231 18:40:56 InnoDB: highest supported file format is Barracuda.
    121231 18:40:57  InnoDB: Waiting for the background threads to start
    121231 18:40:58 InnoDB: 1.1.8 started; log sequence number 1595685
    121231 18:40:58 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
    121231 18:40:58 [Note]   - '127.0.0.1' resolves to '127.0.0.1';
    121231 18:40:58 [Note] Server socket created on IP: '127.0.0.1'.
   **`121231 18:40:58 [ERROR] Can't start server : Bind on unix socket: Permission denied`**

    121231 18:40:58 [ERROR] Do you already have another mysqld server running on socket: 
    /var/run/mysqld/mysqld1.sock ?
    121231 18:40:58 [ERROR] Aborting**
    121231 18:40:58  InnoDB: Starting shutdown...
    121231 18:40:58  InnoDB: Shutdown completed; log sequence number 1595685
    121231 18:40:58 [Note] mysqld: Shutdown complete

Если я запускаю сервер с файла сокета по умолчанию, я могу запустить сервер. Я погуглил об этой проблеме, но только нашел решения, предлагающие, чтобы это было проблемой полномочий. Однако полномочия кажутся прекрасными. Некоторые предположили, что AppArmor мог бы быть причиной, но я проверил, что также - отрывок вставляется выше.

Кто-то может дать некоторые представления?

[Править]

Я вижу следующий вывод в /var/log/syslog.

Jan  2 12:09:34 praveshp-lt mysqld: 130102 12:09:34 [Note] Plugin 'FEDERATED' is disabled.
Jan  2 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: The InnoDB memory heap is disabled
Jan  2 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Mutexes and rw_locks use GCC atomic builtins
Jan  2 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Compressed tables use zlib 1.2.3.4
Jan  2 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Initializing buffer pool, size = 128.0M
Jan  2 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Completed initialization of buffer pool
Jan  2 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: highest supported file format is Barracuda.
Jan  2 12:09:35 praveshp-lt mysqld: 130102 12:09:35  InnoDB: Waiting for the background threads to start
Jan  2 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: 1.1.8 started; log sequence number 1595685
Jan  2 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3307
Jan  2 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Note]   - '127.0.0.1' resolves to '127.0.0.1';
Jan  2 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Note] Server socket created on IP: '127.0.0.1'.
Jan  2 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ERROR] Can't start server : Bind on unix socket: Permission denied
Jan  2 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ERROR] Do you already have another mysqld server running on socket: /var/run/mysqld/mysqld1.sock ?
Jan  2 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ERROR] Aborting
Jan  2 12:09:36 praveshp-lt mysqld: 
Jan  2 12:09:36 praveshp-lt mysqld: 130102 12:09:36  InnoDB: Starting shutdown...
Jan  2 12:09:36 praveshp-lt kernel: [ 7060.098580] type=1400 audit(1357108776.036:33): apparmor="DENIED" operation="mknod" parent=6702 profile="/usr/sbin/mysqld" name="/run/mysqld/mysqld1.sock" pid=7039 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=116 ouid=116
Jan  2 12:09:36 praveshp-lt mysqld: 130102 12:09:36  InnoDB: Shutdown completed; log sequence number 1595685
Jan  2 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Note] /usr/sbin/mysqld: Shutdown complete

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

8
задан 2 January 2013 в 11:56

1 ответ

Глядя на эту строку в следующей строке в журнале, выясняется, что Apparmor запрещает доступ.

Jan  2 12:09:36 praveshp-lt kernel: [ 7060.098580] type=1400 audit(1357108776.036:33):
     apparmor="DENIED" operation="mknod" parent=6702 profile="/usr/sbin/mysqld" 
     name="/run/mysqld/mysqld1.sock" pid=7039 comm="mysqld" requested_mask="c"
     denied_mask="c" fsuid=116 ouid=116

Чтобы разрешить это, добавьте файл /etc/apparmor.d/local/usr.sbin.mysqld с записью ниже и перезапустите MySQL.

/var/run/mysqld/mysqld1.sock w,

Спасибо Ринзвинду за указание на это.

0
ответ дан 2 January 2013 в 11:56

Другие вопросы по тегам:

Похожие вопросы: