2011-10-05 11 views
21

MySQL 5.1.54 Ubuntu 11.04intenta cambiar directorio de registro bin: mysql-bin.index no encontrado (Errcode: 13)

I'am tratar de cambiar directorio de registro bin en my.conf como:

[mysqld] 
log_bin=/home/developer/logs/mysql/mysql-bin.log 

Después de esto cambia el servidor MySQL no se puede iniciar con el error:

/usr/sbin/mysqld: File '/home/developer/logs/mysql/mysql-bin.index' 
not found (Errcode: 13) 
111005 12:47:58 [ERROR] Aborting 

permiso para el directorio/home/desarrollador/logs/mysql/es 0777

¿Qué está pasando?

Respuesta

19

Como siempre, la solución era simple pero no obvia: necesitaba editar la configuración de apparmor Acabo de agregar a /etc/apparmor.d/ usr.sbin.mysqld una nueva cadena con ruta al directorio de destino: /home/developer/logs/* rw

¡Funciona!

+3

apparmor.d no está disponible en mi servidor. – DharanBro

0

¿Su usuario tiene acceso a todos los directorios superiores? En especial, ¿el directorio/home/developer /? Intente iniciar sesión con la cuenta del servidor mysql y toque el archivo de registro.

+0

he copiado permisos del directorio/var/log/mysql. No hay resultados. – solo117

+0

y ¿qué ocurre si le das al usuario mysqld e intentas acceder al directorio? – Andreas

+0

ejecuto "sudo -u mysql touch /home/developer/logs/test.txt", creo exitosamente un archivo – solo117

0

Tuve un problema similar cuando estaba tratando de cambiar la variable datadir durante una nueva instalación. La solución en mi caso fue ejecutar la primera vez que se inició con el log-bin desactivado. Después de eso, pude habilitarlo nuevamente usando la nueva ruta ...

+0

¿Qué quieres decir? detener servidor -> deshabilitar log_bin -> iniciar servidor -> ... detener servidor-> habilitar log_bin -> iniciar servidor_ ??? desafortunadamente no funcionó para mí – solo117

+0

No exactamente. ¿También cambias la posición del datadir? En caso afirmativo, esto es lo que hice para que funcione: desactivar el log-bin en el archivo de configuración, mysql_install_db con el archivo de configuración personalizado, al final de la instalación, mysqld se inicia con el script de instalación. Después de eso: detener, habilitar el log-bin, iniciar. –

+0

Cabe señalar que esto fue durante una nueva configuración. Si tiene una base de datos existente, su situación es diferente. –

3

Selinux podría hacer cumplir la regla de que los archivos de base de datos MySQL tienen que vivir en/var/lib/mysql y no en ningún otro lado. Intente apagar selinux (selinux = 0 en la línea de comandos de arranque del kernel) si movió mysql a otro directorio.

19

/usr/sbin/mysqld: File '/usr/binlogs/mysql-bin.index' not found (Errcode: 13)

Se trabajó para mí con:

chown -R mysql:mysql /usr/binlogs/

+0

Esta es la solución más obvia después de una eliminación accidental de los registros de MySQL bin. Perfecto ! – Maxx

8

Así como un FYI para cualquier persona que se encuentra con un problema similar, la solución es básicamente el mismo, pero la causa del problema no es obvio .

Después de actualizar Debian wheezy, mysql no pudo iniciarse.

De alguna manera, no tengo idea de cómo, los permisos en algunos de los archivos en /var/lib/mysql no eran propiedad del usuario de mysql, lo que impide que el servidor se inicie.

A chown -R mysql.mysql /var/lib/mysql lo arregló.

no hice nada para estropear MySQL, que era una norma:

apt-get update 

apt-get upgrade 

Algo consiguió hinky durante el Debian actualizar y fue necesaria la intervención manual.

3

Opción 1:

  1. service mysqld stop

  2. Copiar los archivos de registro, incluyendo el archivo .index a la nueva ubicación.

    cp mysql-bin.log* /path/to/binlogs 
    cp mysql-bin.index /path/to/binlogs 
    
  3. ¿Los cambios en el archivo /etc/my.cnf.

    [mysqld] 
    log-bin=/path/to/newdirecory/mysql-bin 
    
    log-bin-index=/path/to/newdirectory/mysql-bin.index 
    
  4. service mysqld start

Opción 2:

Utilice esta utiltiy para reubicar los registros binarios:

mysqlbinlogmove --binlog-dir=/server/data /new/binlog_dir 
1

Es necesario dar permisos de usuario en el directorio de la siguiente manera:

chown -R mysql:mysql /home/developer/logs/mysql/ 
0

Su configuración es incorrecta:

log_bin=/home/developer/logs/mysql/mysql-bin.log 

que usaría en lugar

log-bin=/home/developer/logs/mysql/mysql-bin.log 
2

Durante la configuración de la replicación "my.cnf" archivo debe mencionar

server-id = 1 log_bin =/var/log/mysql/mysql-bin.log

puede hacer su propio directorio y dar permiso. crear el directorio "mysql" en/var/log/

chmod 777 mysql

esto es aplicable con la versión de MySQL 5.7

0

También puede comentar la línea en my.cnf archivo que está definiendo la ubicación del registro, por lo MySQL tendrá en cuenta su ruta predeterminada y se iniciará correctamente.

log-bin = /var/log/mysql/mysql-bin.log ->#log-bin = /var/log/mysql/mysql-bin.log.

Esto será útil si no le preocupan mucho los registros.

Cuestiones relacionadas