====== MySQL - MariaDB ====== ===== Descripción =====  MySQL - MariaDB es una base de datos enterprise, con versión community, muy rápida y popular. ===== Prerequistos ===== Tener el server instalado. Usualmente es un paquete  MySQL - MariaDB-server  o mariadb-server ===== Procedimiento ===== ==== 1. Instalar ====  Ya no hay distribución que no tenga MySQL - MariaDB y ahora algunos tienen mariadb a cambio. Instale como mejor prefiera * yum install MySQL - MariaDB-server * apt-get install MySQL - MariaDB-server No suele ser productivo hacerlo desde un tar.gz a menos que necesite una compilación especial ==== 2. Configurar ==== **Crear Usuario** Un usuario  es un registro en la base de datos "MySQL - MariaDB" y la tabla "user" donde esta el usuario y el origen. Yo prefiero que la cree el sistema cuando asigno permisos. (Aunque esto ya no se hace en las ultimas versiones) OJO hay un usuario administrador que se crea usualmente cuando se instala. Recuérdele. CREATE USER phpgw@'%' IDENTIFIED BY '3343EAFDphpgw'; Algunas distribuciones lo dejan sin contraseña y puede asignársela root> mysql -u root MariaDB> SET PASSWORD FOR root@localhost=PASSWORD('el password'); MariaDB> FLUSH PRIVILEGES; MariaDB> exit **Crear Base de Datos** CREATE DATABASE phpgw; **Asigne permisos al usuario** GRANT INSERT,SELECT,CREATE,DELETE on phpgw.* to phpgw@127.0.0.1  IDENTIFIED BY 'phpgw'; o GRANT ALL on phpgw.* to phpgw@127.0.0.1  IDENTIFIED BY 'phpgw'; NOTA: Este ultimo comando crea el usuario si no existe en algunas versiones. **Permita Acceso remoto** En el archivo my.cnf  (/etc/MySQL - MariaDB/my.cnf) permita que se conecte a cualquier puerto comentando la linea\\    bind-address          = 127.0.0.1 El acceso remoto se permite porque el usuario que se conecta es  admin@192.168.8.201  por ejempo o se peude conectar de cualquier lado   admin@%. en la tabla "MySQL - MariaDB.users" pero necesita ademas TODOS los privilegios\\ GRANT ALL on phpgw.* to + phpgw'@'%'  IDENTIFIED BY 'phpgw'; **Conectarse remoto por linea de comandos** mysql -h 192.168.8.74 --password="orfeo" --user=admin orfeo\\   ===== Otras funcionalidades ===== ==== a. Cambiar Contraseña ==== SET PASSWORD FOR phpgw@localhost=PASSWORD('el password'); ==== b. Replica MySQL - MariaDB ==== Enlace: http://wiki.koumbit.net/MysqlReplication Mas moderno .. para 5.5 https://www.digitalocean.com/community/articles/how-to-set-up-master-slave-replication-in-mysql OJO cuando tenga split brain * En el Maestro conectes a la base de datos a replicar y congele las tablas    FLUSH TABLES WITH READ LOCK; NOTA No se vaya a salir porque se desbloquean * En el Maestro Haga show master status para coger cierta info del archivo y su posicion (el numerito) show master status ; +------------------+----------+--------------+------------------+ | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | MySQL - MariaDB-bin.000007 |  4176026 | timer        |                  | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)   * En el cliente pare la replica:   stop slave ; reset slave ; * En el cliente saco copia del congelado en el  cliente .. de un solo totazo es mysqldump -h 192.168.1.206 --user=admin --password=111111 mybasede | mysql  --socket=/usr/local/mysql/data/mysqld.sock  --user=admin --password=22222 mybasede * En el cliente actualice la configuracion del master con estos datos CHANGE MASTER TO MASTER_HOST='192.168.1.206',MASTER_USER='slave_user', MASTER_PASSWORD='passwdroot', MASTER_LOG_FILE='MySQL - MariaDB-bin.000007', MASTER_LOG_POS=4176026; * En el cliente active el esclavo con start slave; y Mire que esta OK con SHOW SLAVE STATUS\\G * En el Master haga unlock tables ; y salgase   ==== c. Alta disponibilidad ==== Wiki MySQL HA   **d. Monitoreo con Nagios** Primero copie en su directorio de plugins (si instalí² Nagios a traves de los repositorios se encuentra en "/usr/lib/nagios/plugins/", pero si tiene una distro de 64 bits estí  en "/usr/lib/nagios/plugins/" ) el script "check_mysql_slave" (3) y asignele permisos de para que pueda ser ejecutado (recuerde dejar el plugin sin extensií²n). Usted puede monitorearla con el usuario administrador de la rí¨plica, pero recuerde que por seguridad es mejor crear un usuario con permisos para que se realice el monitoreo. Dentro de la BD cree un usuario "monitor" con privilegios "REPLICATION CLIENT".  Use esta sentencia para crear dicho usuario: GRANT REPLICATION CLIENT ON *.* TO monitor\@localhost IDENTIFIED BY 'password_del_usuario'; Pruebe el script antes de continuar con la configuración del mismo dentro de nagios: ./check_mysql_slave --host tairona --port 3306 --user monitor --password password_del_usuario -dbname nombre_de_BD\\ OK - Waiting for master to send event, replicating host 10.240.247.6:3306\\   Ahora que ya estamos seguros que funciona el script edite el archivo de comandos de Nagios "commands.cfg", agregue las siguientes líneas:   # "check_mysql_slave" command definition\\ define command{\\         command_name    check_mysql_slave\\         command_line    /usr/lib64/nagios/plugins/check_mysql_slave --host $HOSTNAME$ --port 3306 --user monitor --password password_del_usuario -dbname nombre_de_BD\\         } De igual forma agregue las siguientes líneas para configurar el servicio dentro del archivo "services.cfg" define service{\\ #       use                           generic-service\\         host_name                       tairona\\         service_description             Replica MySQL - MariaDB BVC\\         is_volatile                     0\\         check_period                    24x7\\         max_check_attempts              4\\         normal_check_interval           5\\         retry_check_interval            2\\         contact_groups                  admins\\         notification_interval           120\\         notification_period             24x7\\         notification_options            w,u,c,r\\         check_command                   check_mysql_slave\\         }   Asegurese que las cosas están bien: $ nagios -v nagios.cfg Reinicie Nagios: $ /etc/init.d/nagios restart   //Enlaces:// (2) http://blog.benjaminste.in/category/nagios/ -- (3) http://blog.benjaminste.in/share/check_mysql_slave --   ===== Trucos ===== ==== a. Acelerar el rendimiento de MySQL - MariaDB con la cache ==== Use la siguiente sentencia: SET GLOBAL query_cache_size = 1000000; ==== b Agregar SSL ==== En el server .. /etc/init.d/msql agregamos      --ssl  --ssl-ca="/usr/local/openca/var/openca/crypto/cacerts/cacert.pem"      --ssl-cert="/etc/pki/tls/certs/camry.digifirma.do.crt"      --ssl-key="/etc/pki/tls/private/camry.digifirma.do.key">/dev/null 2>&1 &   Trate de ponerlo en el my.cnf pero no me anda. En el cliente .. si funciona el my,cnf  y se coloca [client] ssl-ca=/usr/local/openca/var/openca/crypto/cacerts/cacert.pem   Y ya se puede conectar con SSL .. cuando conecte desde el cliente dele "\\s" y busque el SSL a ver que ciframiento esta usando Si quiere obligar haga un grant obligando SSL grant all on ccpsd_openca.* to ccpsd_user@digifirma.do identified by 'Wooche' require SSL; Mas complejo Puede que obligue al uso de firma real .. entonces pone es un requiere "X509" y el cliente debe tener [client] ssl-cert=/etc/pki/tls/certs/rav4.digifirma.do.crt ssl-key=/etc/pki/tls/private/rav4.digifirma.do.key ssl-ca=/usr/local/openca/var/openca/crypto/cacerts/cacert.pem   Pero esto nunca lo logre .. simpre tuve un error SSL .. y no se pudo   ==== c) Particionamiento de tablas .. cuando son muy grandes ==== http://mundogeek.net/archivos/2012/03/09/particiones-en-mysql?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29&utm_content=Google+Feedfetcher\\   ==== d) Optimizacion ==== https://raw.github.com/major/MySQLTuner-perl/master/mysqltuner.pl https://launchpad.net/mysql-tuning-primer\\ mysqlcheck -o All databases: mysqlcheck -o --all-databases ===== Problemas ===== ==== 1. No funciona el cambiar localhost ==== Ya no funciona UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='admin' Sin que toca hacer RENAME USER 'admin'@'localhost' TO 'admin'@'%'; - ------------------------- FIN ------------------------