Diagnosticar y reparar cuando SELinux está previniendo a mysqld (mysqld_t)

Hoy intentaba borrar una base de datos de un servidor corriendo MySql con SELinux habilitado cuando recibí este error. mysql> drop database test_everywhere; ERROR 6 (HY000): Error on delete of './test_everywhere//db.opt' (Errcode: 13) Al incio pense que era un problema de permisos pero revisando el syslog.  me encontre con un mensaje como: setroubleshoot: SELinux is preventing mysqld (mysqld_t) "read" to ./test_everywhere//db.opt (public_content_rw_t). For complete SELinux messages. run sealert -l 1762c478-f3a2-4eeb-be09-bd3dc037d945 Era probable que los contextos de seguridad de MySql estaban errados, entonce procedí a restablecerlos: service mysqld stop restorecon -v -R /usr/libexec/mysqld restorecon -v -R /var/run/mysqld restorecon -v /var/log/mysqld.log restorecon -v -R /var/lib/mysql restorecon -v /var/lib/mysql/mysql.sock restorecon -v -R /etc/my.cnf service mysqld...

read more

Cerrar todas las conexiones de un usuario en MySQL

Algunas veces nos encontramos con un usuario en MySQL que esta usando muchas conexiones, más de 20,  y estas estan en estado Sleep. Podríamos copiar cada numero de proceso y agregarle el comando KILL pero esto nos llevaria un poco de tiempo. Entonces nos preguntamos ¿ como hacemos para cerrar todas las conexiones de un usuario en MySQL ? Gracias a la introduccion del information_schema podemos hacer una busqueda y sacar todos los procesos de un mismo usuario. Veamos el siguiente cuadro. mysql> select concat('KILL ',id,';') from information_schema.processlist where user='root'; +------------------------+ | concat('KILL ',id,';') | +------------------------+ | KILL 3101; | | KILL 2946; | +------------------------+ 2 rows in set (0.00 sec) Como vemos este comando nos va a dar el listado de todas conexiones pero ahora tenemos el problema que no podemos hacer copiado y pegado para ejecutar estos comandos. Para resolver el problema vamos a enviar los resultados a un archivo de texto el cual posteriomente ejecutaremos de un solo. mysql> select concat('KILL ',id,';') from information_schema.processlist where user='root' into outfile '/tmp/a.txt'; Query OK, 2 rows affected (0.00 sec)   mysql> source /tmp/a.txt; Query OK, 0 rows affected (0.00 sec) Con este mismo procedimiento podríamos resolver muchas situaciones en las que ocupamos ejecutar muchas sentencias sin necesidad de preparalas en un editor de...

read more