De vez en cuando hay intentos fallidos de inicio de sesión en nuestro servidor de producción MySQL (el panel de control de MySQL nos alerta). ¿Hay alguna forma de registrar cada inicio de sesión exitoso y fallido en el servidor MySQL sin habilitar general_log
?
Creemos que general_log
no es una opción porque es un servidor de producción con alta carga.
As of MySQL 5.5.28, MySQL Enterprise Edition includes MySQL Enterprise Audit, implemented using a server plugin named audit_log.
solo la versión emprendedora lo tiene.Respuestas:
solo para informar al curioso: ¡busca en tu registro de errores y listo!
(1) edit my.cnf (la documentación de configuración se encuentra aquí )
(2) al comando ejecutar
(3) y lo tienes
(4) si necesita restringir el usuario (ataque de dos o intento de recuperación de contraseña de usuario mysql en una base de datos multiusuario), entonces ( http://dev.mysql.com/doc/refman/5.5/en/user-resources.html )
restringir a solo 100 intentos de recuperación de contraseña por hora.
fuente
Creo que el registro general podría registrar todos los intentos de inicio de sesión (éxito y error) entre muchas otras cosas. El principal problema es que el registro general afectará el rendimiento de su base de datos. Puede activar el registro general con la consulta
para versiones más recientes de MySQL.
fuente
/etc/mysql/my.cnf
mysql?--general-log
a las banderas cuando inicia MySQL.Hola, no creo que sea posible.
A partir de mysql 5.1.29: puede especificar la opción de almacenamiento (tabla o archivo) y la ubicación y el registro que desea: error, consulta general, binaria o lenta. Que yo sepa, no puede especificar el formato del registro o lo que se registra. Podría estar equivocado, pero creo que todos los intentos de inicio de sesión se registrarán en el registro general, y no en el error.
Sin embargo, suponiendo que su servidor mysql se esté ejecutando en una máquina separada, desde su aplicación, y que necesite el puerto 3306 (o lo que sea) abierto y no pueda usar el túnel ssh, su servidor mysql aún no debería ser accesible para nadie nilly Recomiendo no exponerlo al tráfico web, y si debe (como en el caso de que resida en algún lugar que no esté detrás de su firewall) vincularlo a la dirección IP o al bloque ip de su servidor de aplicaciones y su IP de acceso de administrador (donde se encuentre accediendo desde)
Espero que ayude.
fuente
Uno puede iniciar sesión
connect
yquit
ordenar usando mysql-audit-plugin.audit-plugin-percona-5.7-1.1.7-805-linux-x86_64.zip
.so
archivo descargado en el lugar dado pormysqladmin variables | grep plugin_dir
.mysql>install plugin audit soname 'libaudit_plugin.so'
mysql>set global audit_json_file=ON
, por defecto registra todas las operaciones exitosas. configurando losset global audit_record_cmds='quit,connect'
registros solo se conecta y se cierra, supongo, de acuerdo con la configuración de mysql-audit-plugin .Así es como se ve en el archivo para iniciar y cerrar sesión:
fuente
si el servidor en cuestión no debe tener conexiones externas, como está configurado, me preocuparía algún tipo de ataque contra su servidor de aplicaciones, a menos que los inicios de sesión fallidos sean de nuevas aplicaciones que se están implementando antes de que se haya configurado el usuario / pase.
si el servidor está de alguna manera expuesto a conexiones externas en 3306, a menos que sea intencional y necesario, establecería la configuración como dijo Nick, y también consideraría el uso de iptables para restringir el tráfico a 3306 desde solo sus servidores de aplicaciones.
fuente
En http://www.mysqlperformanceblog.com/2008/11/07/poor-mans-query-logging/ , el autor muestra un método para capturar los paquetes usando tcpdump y filtrar la salida en función de la cadena.
Esto resuelve sus inquietudes con respecto al general_log y el rendimiento, aunque tcpdump podría incurrir en una penalización de rendimiento menor. Esta solución también registrará menos datos que el Registro de consultas generales.
No lo he usado yo mismo, pero suena muy útil.
fuente