Mostrando entradas con la etiqueta mysql_config_editor. Mostrar todas las entradas
Mostrando entradas con la etiqueta mysql_config_editor. Mostrar todas las entradas

lunes, 21 de septiembre de 2020

MySQL mysql_config_editor y esperar

 Esta es solo una nota para ayudar a cualquiera que desee utilizar el comando mysql_config_editor en sus herramientas de automatización. 

mysql_config_editor no acepta un argumento de contraseña, por lo que las herramientas de automatización pueden haber establecido antes su contraseña en el archivo .my.cnf al intentar usar mysql_config_editor fallan. 

Es posible y bastante simple, aunque con la herramienta de espera. 

 yum -y install expect  

también funciona para apt-get. 


Entonces, en este ejemplo, mostraré una versión simple del script bash. 

Primero ... mi ruta de acceso no funciona ... 

mysql --login-path=local

ERROR 1045 (28000): Access denied for user


Establecer esto con esperar 

Ejecutarías esto a través de tu script bash.  

expect <<EOD

spawn mysql_config_editor set --login-path=local --host=localhost --user=root --password 

expect "password"

send  -- "<PASSWORD>\r"

interact

EOD


Ahora funciona ...

mysql --login-path=local

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1002


sábado, 11 de octubre de 2014

Rotación de Logs MySQL lentas

Original post: http://anothermysqldba.blogspot.com/2014/10/rotating-mysql-slow-logs.html

Al trabajar con diferentes clientes Sucede que correr a través de grandes archivos de registro lento de vez en cuando. Si bien existen varias opiniones sobre la forma en que se deben rotar. Muchas de estas opiniones utilice Girar registro y el comando registros ras, prefiero no para eliminar mis registros binarios sin embargo. Es por esto que estoy de acuerdo con Ronald Bradfordentrada de blog desde hace años sobre la forma de hacer esto. 
Me he tomado un poco más lejos y con guión de los pasos. El script bash se construye con MySQL 5.6 y el mysql_config_editor en cuenta que se puede utilizar en las versiones antiguas de MySQL también. 

El script hará lo siguiente: 
  • Reúna nombre del archivo de registro actual
  • Reúna valor actual tiempo de consulta larga
  • Restablece el tiempo de consulta de largo a un valor más alto
  • Las copias del registro, mientras que truncar así (Ver Nota de Ronald)
  • Restablece el tiempo de consulta larga volver a la hora original
  • Ejecuta una simple consulta lenta para que pueda comprobar el nuevo registro lento si lo desea
  • Elimina el registro más antiguo lenta para que pueda ganar espacio atrás.
    • Puedes comentar este comando si desea revisar el registro de su lugar.
Así lo hace todo el trabajo? 
Bueno vamos a utilizar este ejemplo. 

Actualmente estoy usando el mysql_config_editor sobre un archivo .my.cnf lo he actualizado la secuencia de comandos en consecuencia. 
# mysql_config_editor print --all 
[local] 
user = root 
password = ***** 
host = localhost 

Puedo ver que este registro de consultas lentas es ahora 1G. 
# ls -alh mysql-slow.log 
-rw-rw---- 1 mysql mysql 1.1G Oct 11 16:08 mysql-slow.log 

Así que ejecutar el script 
# /root/rotate_slow_logs.sh 
# ls -alh mysql-slow.log 
-rw-rw---- 1 mysql mysql 5.8K Oct 11 16:11 mysql-slow.log 

Ok bueno, trabajado y tengo un archivo de registro más pequeño ahora sin rubor mis registros bin o reiniciar MySQL. 

Este script se puede agregar a un crontab para que pueda girar con tanta frecuencia como le gustaría. 

Aquí está el guión. 
#!/bin/bash 

# THIS IS BUILT WITH MYSQL 5.6 SECURITY IN MIND. 
# SET THE LOGINPATHVALUE if you are using the mysql_config_editor 
# IF YOU ARE NOT USING THE mysql_config_editor THEN IT IS ASSUMED YOU HAVE 
# SET A .my.cnf FILE IN THE USER HOME DIR OR THIS USER HAS NO PASSWORD SET 


# PLEASE SET THIS ACCORDINGLY TO YOUR SYSTEM. 
LOGINPATHVALUE="local"; 

if [ -z "${LOGINPATHVALUE}" ]; then 
LOGINPATH=""; 
fi 

if [ -n "${LOGINPATHVALUE-unset}" ]; then 
LOGINPATH="--login-path=$LOGINPATHVALUE " 

fi 

# GATHERS THE LOG FILE NAME 
SLOWLOG=$(mysqladmin $LOGINPATH variables | grep slow | grep file | awk '/[a-zA-Z]/ {print $4}' ) 

# GATHER CURRENT VALUE 
LQT=$( mysqladmin $LOGINPATH variables | grep long_query_time | awk '/[0-9]./ {print $4}' ) 
LQTB=$(mysql $LOGINPATH -e " SELECT @@global.long_query_time *200 AS LQTB;" | awk '/[0-9]./ {print $1}' ) 
LQTC=$(mysql $LOGINPATH -e " SELECT @@global.long_query_time *2 AS LQTC;" | awk '/[0-9]./ {print $1}' ) 

# GATHER MARKER 
DATE=`date +"%m%d%Y"` 

# RESET SLOW QUERY TIME 
# SET GLOBAL long_query_time=10; 
mysql $LOGINPATH -e "SET GLOBAL long_query_time= $LQTB" 

LQTD=$( mysqladmin $LOGINPATH variables | grep long_query_time | awk '/[0-9]./ {print $4}' ) 

#MOVE THE LOG OUT 
cp $SLOWLOG $SLOWLOG.$DATE; > $SLOWLOG 

#SET THE TIMEBACK 
mysql $LOGINPATH -e "SET GLOBAL long_query_time= $LQT" 

LQTD=$( mysqladmin $LOGINPATH variables | grep long_query_time | awk '/[0-9]./ {print $4}' ) 

#PLACE A Slow query for log 
SLOWQUERY=$(mysql $LOGINPATH -e "SELECT sleep($LQTC) " ) 

# REMOVE OLD LOG 
/bin/rm -f $SLOWLOG.$DATE;



jueves, 6 de junio de 2013

MySQL Tabla de comprobación

Original post: http://anothermysqldba.blogspot.com/2013/06/mysql-check-table.html

El comando Check tablas MySQL es muy útil para cualquier persona que quiera hacer lo siguiente:
  • Comprobación de compatibilidad de versiones
  • Comprobación de coherencia de datos
  • Actualizaciones
  • Errores de la tabla general
El proceso es bastante simple:

> show tables;
+-----------------+
| Tables_in_world |
+-----------------+
| City |
| Country |
| CountryLanguage |
+-----------------+

> check table City\G
*************************** 1. row ***************************
Table: world.City
Op: check
Msg_type: status
Msg_text: OK


Esta es una buena tarea para mantenerte actualizado sobre lo que son conscientes de los posibles errores. Un posible problema es que esta herramienta realmente se centra en MyISAM y InnoDB no. Si lo usa para InnoDB, el comando "mesa Check" en realidad sólo se aplica cuando se agrega la opción RÁPIDA (o sin opciones). Las opciones de FAST, cambiado, mediana y larga están ignorados por InnoDB. Ahora, si usted se está preguntando, ¿qué pasa con InnoDB? ¿Por qué ignorar MySQL consistencia de datos en el motor InnoDB? Tome una respiración profunda y relajarse, InnoDB se queja ACID , ACID es " un pie acrónimo de atomicidad, coherencia, aislamiento y durabilidad. " Así que no ignore comprobar tablas InnoDB porque todavía puede proporcionar alguna información o la confirmación en sus mesas. Tenga en cuenta que si una tabla InnoDB era estar dañado el servidor se apagará para proteger los datos. Usted acaba de obtener más por tu dinero con tablas MyISAM y esta herramienta.

Esperemos que se obtiene una respuesta de "OK" o "tabla ya está al día" en caso contrario es necesario ejecutar una mesa de reparación para arreglar la mesa.

¿Cuáles son las opciones disponibles para nosotros, así que usted puede hacer esto a menudo y fácilmente.
El enlace siguiente documentación también le proporcionará con varias comunidades impulsada opciones automáticas. Usted puede crear un script que el proceso y mostrar fácilmente las tablas a continuación, realizar controles mediante tablas de todos los resultados. Simplemente parece más fácil para mí, aunque para utilizar las herramientas proporcionadas para usted.


$ mysqlcheck -u root -p --databases world --fast
Enter password:
world.City OK
world.Country OK
world.CountryLanguage OK

$mysqlcheck -u root -p --databases world --fast --check-only-changed
Enter password:
world.City OK
world.Country OK
world.CountryLanguage OK

Ahora bien, esto es simple y directo, pero también se presta a otra pregunta, ¿Qué pasa con la contraseña?

En caso de que crear un usuario sin contraseña que se le permite comprobar las tablas sólo para que usted no tiene que poner una contraseña en su script o tarea programada? Usted quiere evitar tener la contraseña sentados en los archivos. Mysql_history también. Así que una vez más tomar ventaja de las herramientas disponibles para usted. MySQL 5.6 introduce la Utilidad de configuración de MySQL . Tengo un ejemplo de cómo configurarlo en un blog anterior:
http://anothermysqldba.blogspot.com/2013/05/mysql-users-grants-mysqlconfigeditor.html

mysqlcheck --login-path=local --databases world --fast --check-only-changed
world.City OK
world.Country OK
world.CountryLanguage OK

$ Mysqlcheck - help proporcionará una lista completa de opciones disponibles para usted.
Ahora, usted puede comprobar todas las tablas, mantener sus contraseñas del archivo crontab y / o scripts.

Documentación:

domingo, 19 de mayo de 2013

Los usuarios de MySQL :: Becas :: mysql_config_editor :: Seguridad

Original post: http://anothermysqldba.blogspot.com/2013/05/mysql-users-grants-mysqlconfigeditor.html

El acceso seguro a la base de datos es probable que la prioridad número uno para cualquier administrador de base de datos. Si no es así, entonces usted necesita considerar seriamente por qué no lo es. 

Las pautas generales a través del manual ya están disponibles: 


Uno de los principales problemas con la seguridad en MySQL es, por supuesto, los permisos que se ofrecen a los usuarios. 
Estas son algunas pautas simples. 

En primer lugar mantener "super usuario" o cuentas "root" al mínimo. Un usuario con acceso completo o "GRANT ALL" todavía tendrá acceso cuando haya alcanzado sus conexiones máx.Así que lo último que querría es un programa que va a ejecutar comandos con un usuario con acceso completo. 

Tenga en cuenta qué tipos de cuentas que está creando. Usted puede limitar a un usuarioMAX CONSULTAS, MAX, MAX ACTUALIZACIONES conexiones y MAX conexiones de usuario por hora . 

Tenga en cuenta el entorno de red que los usuarios se conectan desde. Si los usuarios van a utilizar direcciones de red DHCP en la misma subred que sólo sería la creación de más trabajo para ti si les limitado a una sola dirección IP. Todavía les puede limitar a la subred aunque con un comodín. Por ejemplo '192 .168.0.2 "versus '192 .168.0.% ' 

Manténgase alejado de todo acceso comodín para el host y los usuarios. 



> CREATE USER ''@'192.168.0.56' ;
Query OK, 0 rows affected (0.02 sec)

> show grants for ''@'192.168.0.56';
+-----------------------------------------+
| Grants for @192.168.0.56 |
+-----------------------------------------+
| GRANT USAGE ON *.* TO ''@'192.168.0.56' |
+-----------------------------------------+


Esto dejará abierta para cualquier persona de 192.168.0.56 y no es una cosa segura inteligente. 
También podría violar otras cuentas desde 192.168.0.56 ya que MySQL comprueba anfitrión primero y segundo nombre de usuario. 


> GRANT SELECT ON test.* TO 'exampleuser'@'192.168.0.%' IDENTIFIED BY 'somepassword';

> show grants for 'exampleuser'@'192.168.0.%';
+----------------------------------------------------------------------------------------------------------------------+
| Grants for exampleuser@192.168.0.% |
+----------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'exampleuser'@'192.168.0.%' IDENTIFIED BY PASSWORD '*DAABDB4081CCE333168409A6DB119E18D8EAA073' |
| GRANT SELECT ON `test`.* TO 'exampleuser'@'192.168.0.%' |
+----------------------------------------------------------------------------------------------------------------------+

Esto permitirá que selecciona sólo para exampleuser del '192 .168.0.%. También debe tener en cuenta que si exampleuser se conecta desde HOST LOCAL que el sistema probablemente localhost usuario en primer lugar antes de la. Dirección de subred 192.168.0% menos que el usuario utiliza la dirección de subred del host conectarse. 

Esto significa que puede crear un usuario y contraseña con privilegios diferentes por host. 


> SHOW GRANTS FOR 'exampleuser'@'localhost';
+--------------------------------------------------------------------------------------------------------------------+
| Grants for exampleuser@localhost |
+--------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'exampleuser'@'localhost' IDENTIFIED BY PASSWORD '*DAABDB4081CCE333168409A6DB119E18D8EAA073' |
| GRANT SELECT, UPDATE, DELETE ON `test`.* TO 'exampleuser'@'localhost' |
+--------------------------------------------------------------------------------------------------------------------+

Haga su mejor esfuerzo para no utilizar la opción - password = opción <contraseña> través del cliente de mysql. Usted puede utilizar-p para que solicite una contraseña. 

Usted también tiene la opción de MySQL 5.6 para utilizar la Utilidad de configuración de MySQL . 


# mysql_config_editor set --login-path=local --host=localhost --user=root --password
Enter password: 




# mysql_config_editor print --all
[local]
user = root
password = *****
host = localhost 


# Mysql
ERROR 1045 (28000): Acceso denegado para el usuario 'root' @ 'localhost' (using password: NO)

# Mysql - login-path = local
Bienvenido al monitor de MySQL.

# Mysql - login-path = local-e "SELECT NOW () ';

Usted tiene opciones para nombrar los diferentes caminos como local o remoto y etc también. Así que usted puede codificar más de una cuenta de usuario de acceso en el archivo ~ /. Mylogin.cnf archivo que se creará una vez que utiliza el comando set. 

Si tiene scripts de shell que utilizan el cliente mysql y es probable entonces que las contraseñas de los scripts de actualización a utilizar el "- login-path =" es una forma más segura de ir. 


Por supuesto, cuando ya no es necesario que un usuario ... Suelta el usuario. 


> DROP USER 'exampleuser'@'localhost';