He instalado el servidor MySQL 5.5 en Ubuntu 12.04. Estoy tratando de iniciar el servidor MySQL en un archivo de calcetines diferente. Por defecto, MySQL se ejecuta en /var/run/mysqld/mysqld.sock.
Estoy tratando de ejecutar el mismo servidor en /var/run/mysqld/mysqld1.sock.
Para esto he realizado los siguientes cambios:
- Cambios en /etc/mysql/my.cnf
[cliente] puerto = 3306 socket = /var/run/mysqld/mysqld1.sock [mysqld_safe] socket = /var/run/mysqld/mysqld1.sock bonito = 0 [mysqld] usuario = mysql pid-file = /var/run/mysqld/mysqld.pid ** socket = /var/run/mysqld/mysqld1.sock** puerto = 3306 basedir = / usr datadir = / var / lib / mysql tmpdir = / tmp lc-messages-dir = / usr / share / mysql
También agregué la siguiente línea a /etc/apparmor.d/usr/sbin.mysqld
/var/run/mysqld/mysqld1.sock w,
/var/run/mysqld/mysqld[1-9font>.sock w,
También cambié la propiedad del directorio / var / run / mysqld a mysql user.
ls -lA / var / run / | grep mysqld
drwxrwxrwx 2 mysql mysql 40 31 de diciembre 17:24 mysqld
Sin embargo, cuando intento iniciar el servidor MySQL me sale el siguiente error (como usuario root)
$ mysqld --user = mysql --verbose 121231 18:40:56 [Nota] El complemento 'FEDERADO' está deshabilitado. 121231 18:40:56 InnoDB: el montón de memoria InnoDB está deshabilitado 121231 18:40:56 InnoDB: Mutexes y rw_locks usan componentes atómicos GCC 121231 18:40:56 InnoDB: las tablas comprimidas usan zlib 1.2.3.4 121231 18:40:56 InnoDB: Inicializando agrupación de almacenamiento intermedio, tamaño = 128.0M 121231 18:40:56 InnoDB: inicialización completada de la agrupación de almacenamiento intermedio 121231 18:40:56 InnoDB: el formato de archivo más alto admitido es Barracuda. 121231 18:40:57 InnoDB: esperando que comiencen los hilos de fondo 121231 18:40:58 InnoDB: 1.1.8 iniciado; número de secuencia de registro 1595685 121231 18:40:58 [Nota] Nombre de host del servidor (dirección de enlace): '127.0.0.1'; puerto: 3306 121231 18:40:58 [Nota] - '127.0.0.1' se resuelve en '127.0.0.1'; 121231 18:40:58 [Nota] Socket de servidor creado en IP: '127.0.0.1'. ** `121231 18:40:58 [ERROR] No se puede iniciar el servidor: Enlace en el socket de Unix: Permiso denegado` ** 121231 18:40:58 [ERROR] ¿Ya tiene otro servidor mysqld ejecutándose en el socket: /var/run/mysqld/mysqld1.sock? 121231 18:40:58 [ERROR] Abortar ** 121231 18:40:58 InnoDB: inicio del apagado ... 121231 18:40:58 InnoDB: apagado completado; número de secuencia de registro 1595685 121231 18:40:58 [Nota] mysqld: apagado completo
Si inicio el servidor con el archivo de socket predeterminado, puedo iniciar el servidor. Busqué en Google este problema, pero solo encontré soluciones que sugieren que es un problema de permisos. Sin embargo, los permisos parecen estar bien. Algunos han sugerido que AppArmor podría ser una causa, pero también lo he comprobado: el fragmento se ha pegado anteriormente.
¿Alguien puede proporcionar algunas pistas?
[EDITAR]
Veo el siguiente resultado en /var/log/syslog
.
2 de enero 12:09:34 praveshp-lt mysqld: 130102 12:09:34 [Nota] El complemento 'FEDERADO' está deshabilitado. 2 de enero 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: el montón de memoria de InnoDB está deshabilitado 2 de enero 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Mutexes y rw_locks usan componentes atómicos del CCG 2 de enero 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: las tablas comprimidas usan zlib 1.2.3.4 2 de enero 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Inicializando agrupación de almacenamiento intermedio, tamaño = 128.0M 2 de enero 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: inicialización completada de la agrupación de almacenamiento intermedio 2 de enero 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: el formato de archivo más alto admitido es Barracuda. 2 de enero 12:09:35 praveshp-lt mysqld: 130102 12:09:35 InnoDB: Esperando a que comiencen los hilos de fondo 2 de enero 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: 1.1.8 comenzó; número de secuencia de registro 1595685 2 de enero 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Nota] Nombre de host del servidor (dirección de enlace): '127.0.0.1'; puerto: 3307 2 de enero 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Nota] - '127.0.0.1' se resuelve en '127.0.0.1'; 2 de enero 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Nota] Socket de servidor creado en IP: '127.0.0.1'. 2 de enero 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ERROR] No se puede iniciar el servidor: enlace en el socket de Unix: permiso denegado 2 de enero 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ERROR] ¿Ya tiene otro servidor mysqld ejecutándose en el socket: /var/run/mysqld/mysqld1.sock? 2 de enero 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ERROR] Abortar 2 de enero 12:09:36 praveshp-lt mysqld: 2 de enero 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: Iniciando el apagado ... 2 de enero 12:09:36 kernel praveshp-lt: [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" required_mask = "c" deny_mask = "c" fsuid = 116 ouid = 116 2 de enero 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: cierre completado; número de secuencia de registro 1595685 2 de enero 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Nota] / usr / sbin / mysqld: cierre completo
Dice permiso denegado, sin embargo, parece que he establecido los permisos correctos.
/usr/local/mysql
y/tmp
. La necesidad de ser 775 como mínimo. 2. El permiso para el directorio de la base de datos mysql en la/var/lib/
carpeta debe sermysql:root
(chown mysql:root mysql
)/etc/apparmor.d/usr.sbin.mysqld
Aquí hay una comparación entre la versión antigua y la nueva: bugs.launchpad.net/ubuntu/+source/mysql-5.1/+bug/876268/…Respuestas:
Al observar esta línea en la siguiente línea en el registro, parece que Apparmor está negando el acceso.
Para permitir esto, agregue un archivo
/etc/apparmor.d/local/usr.sbin.mysqld
con la entrada a continuación y reinicie MySQL.Gracias a Rinzwind por señalar esto.
fuente