¿Cómo instalar MariaDB en CentOS 7?

Actualizado el 8 de septiembre, 2016. Por BlueHosting.

MariaDB es una alternativa al popular sistema multiplataforma de gestión de bases de datos MySQL. MariaDB fue creada por uno de los desarrolladores originales de MySQL en 2009 y tiempo después MySQL fue adquirido por Oracle durante la fusión Sun Microsystems. Hoy día, MariaDB es un sistema mantenido y desarrollado por la fundación MariaDB Foundation y la comunidad de contribuyentes con la intención de que el software persista con su licencia GNU GPL.

MariaDB remplaza a MySQL como el sistema de base de datos predeterminado en los repositorios de CentOS 7. A pesar de esto, existe una alternativa para instalar MySQL en CentOS 7 (puede comprobarlo en nuestro tutorial). Si necesita un sistema para sus bases de datos, se recomienda utilizar MariaDB debido a que provee el soporte oficial y la probabilidad de incompatibiolidad con algún software de otro repositorio es mínima.

Esta guía está escrita para un usuario no root. Los comandos que requieren privilegios elevados están precedidos por sudo.

Antes de comenzar

  1. Asegúrese de seguir nuestra guía de seguridad Además será necesario que tenga establecido un hostname.
    Para verificar su hostname puede ejecutar:

    hostname  
    hostname -f
    

    El primer comando debería mostrar el hostname corto, y el segundo debería mostrar el nombre de dominio completamente calificado (o FQDN, por sus siglas en inglés).

  2. Actualice su sistema:

    sudo yum update
    

Instalar e iniciar MariaDB

  1. Instale el sistema MariaDB
    sudo yum install mariadb-server
    

    Configure MariaDB para que arranque al iniciar el sistema e inicie el servicio:

    sudo systemctl enable mariadb
    sudo systemctl start mariadb
    

    Por defecto, MariaDB se vinculará con el localhost (127.0.0.1). Existen otros métodos para acceder a sus bases de datos MariaDB de forma remota pero no se abordan en este tutorial.

Nota:
No se aconseja permitir acceso sin restricciones a MariaDB bajo una IP pública, pero puede cambiar la dirección en la que escucha MariaDB modificando el parámetro bind-address en el archivo /etc/my.cnf. Si decide vincular MariaDB a su IP pública, deberá implementar reglas de firewall que solo admitan conexiones desde direcciones IP específicas. Para más información sobre cómo configurar un firewall usando iptables visite nuestro tutorial: iptables.

Fortalecer su servidor MariaDB

  1. Ejecute el script mysql_secure_installation para hacer frente a varios problemas de seguridad en una instalación predeterminada de MariaDB.
    sudo mysql_secure_installation
    

    Si aún no ha establecido una contraseña para el usuario root, simplemente presione Enter en el siguiente mensaje:

    Enter current password for root (enter for none):
    

Se le dará la opción de cambiar su contraseña root de MariaDB, eliminar cuentas de usuario anónimas, deshabilitar los inicios de sesión root fuera del localhost y eliminar bases de datos de prueba. Se recomienda contestar yes a todas estas opciones durante la instalación. Para más información visite el siguiente artículo oficial de MariaDB sobre mysql_secure_installation.

Usar MariaDB

La herramienta estándar para la interacción con MariaDB es el cliente mariadb, el cual instala el paquete mariadb-server. El cliente MariaDB se usa a través de un terminal y puede utilizar los comandos comunes de MySQL.

Inicio de sesión con usuario root

  1. Para iniciar sesión como usuario root:

    mysql -u root -p
    
  2. Cuando se le solicite, ingrese la contraseña root que asignó al momento de ejecutar el script mysql_secure_installation.
    Si el inicio de sesión es correcto aparecerá un encabezado de bienvenida y luego podrá ver la línea de comandos de MariaDB:

    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 10
    Server version: 5.5.50-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    MariaDB [(none)]>
    
  3. Para generar una lista de los comandos de MariaDB, ingrese \h. Podrá ver una lista similar a la siguiente:

    List of all MySQL commands:
    Note that all text commands must be first on line and end with ';'
    ?         (\?) Synonym for `help'.
    clear     (\c) Clear the current input statement.
    connect   (\r) Reconnect to the server. Optional arguments are db and host.
    delimiter (\d) Set statement delimiter.
    edit      (\e) Edit command with $EDITOR.
    ego       (\G) Send command to mysql server, display result vertically.
    exit      (\q) Exit mysql. Same as quit.
    go        (\g) Send command to mysql server.
    help      (\h) Display this help.
    nopager   (\n) Disable pager, print to stdout.
    notee     (\t) Don't write into outfile.
    pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
    print     (\p) Print current command.
    prompt    (\R) Change your mysql prompt.
    quit      (\q) Quit mysql.
    rehash    (\#) Rebuild completion hash.
    source    (\.) Execute an SQL script file. Takes a file name as an argument.
    status    (\s) Get status information from the server.
    system    (\!) Execute a system shell command.
    tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.
    use       (\u) Use another database. Takes database name as argument.
    charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
    warnings  (\W) Show warnings after every statement.
    nowarning (\w) Don't show warnings after every statement.
    

Crear un nuevo usuario MariaDB y una base de datos

  1. En el siguiente ejemplo, bdprueba es el nombre de la base de datos, usuarioprueba es el nombre del usuario y SuContraseña es la contraseña correspondiente a ese usuario.

    create database bdprueba;
    create user 'usuarioprueba'@'localhost' identified by 'SuContraseña';
    grant all on bdprueba.* to 'usuarioprueba' identified by 'SuContraseña';
    

    Puede acortar este proceso creando el usuario mientras asigna los permisos de la base de datos:

    create database bdprueba;
    grant all on bdprueba.* to 'usuarioprueba' identified by 'SuContraseña';
    
  2. Luego salga de MariaDB.

    exit
    

Crear una tabla de muestra

  1. Vuelva a ingresar a MariaDB usando ahora el usuario usuarioprueba:

    mysql -u usuarioprueba -p
    
  2. Cree una tabla de muestra llamada clientes. Esto crea una tabla con un campo ID de tipo INT (número entero que va incrementando a medida que se añaden nuevos registros) usado como llave primaria, así como dos campos adicionales para almacenar el nombre del cliente:

    use bdprueba;
    create table clientes (id_cliente INT NOT NULL AUTO_INCREMENT PRIMARY KEY, nombre TEXT, apellido TEXT);
    

    Note que a diferencia de MySQL, MariaDB indica la base de datos en la cual está trabajando, así, al ejecutar el primer comando podrá ver que el prompt cambia a MariaDB [bdprueba]>.

  3. Puede ver la nueva tabla utilizando

    show tables;
    
  4. Luego salga de MariaDB:

    exit
    

Reiniciar la contraseña del usuario root de MariaDB

Si usted olvida la contraseña del usuario root de MariaDB, esta puede reiniciarse.

  1. Detenga la instancia actual del servidor MariaDB y luego reiníciela especificando una opción que evita la solicitud de contraseña:

    sudo systemctl stop mariadb
    sudo mysqld_safe --skip-grant-tables &
    
  2. Vuelva a conectarse al servidor MariaDB con la cuenta root de MariaDB:

    mysql -u root
    
  3. Use los siguientes comandos para reiniciar la contraseña del usuario root. Remplace contraseña con una nueva contraseña segura:

    use mysql;
    update user SET PASSWORD=PASSWORD("password") WHERE USER='root';
    flush privileges;
    exit
    
  4. Finalmente, reinicie MariaDB:

    sudo systemctl start mariadb
    

Optimizar MariaDB

MySQL Tuning Primer puede ser utilizado para optimizar su servidor MariaDB. Idealmente, la instancia de MariaDB debería estar en operación desde al menos 24 horas antes de ejecutar el optimizador. Mientras más tiempo haya estado en ejecución, mejores serán los resultados obtenidos.

  1. Este script requiere la instalación del lenguaje bc:

    sudo yum install bc
    
  2. En caso de no tener instalado el gestor de paquetes wget use:

    sudo yum install wget
    
  3. Descargue MySQL Tuning en su directorio principal y otorgue los permisos de ejecución:

    wget http://www.day32.com/MySQL/tuning-primer.sh
    chmod u+x tuning-primer.sh
    
  4. Para ejecutar el script utilice:

    sudo ./tuning-primer.sh
    

    Se le preguntara si le gustaría ejecutar el script en un socket MySQL diferente de /var/lib/mysql/mysql.sock. Seleccione N. Luego se le preguntará si tiene las credenciales para el inicio de sesión. Ingrese y, luego coloque las credenciales correspondientes.
    Obtendrá un resultado ordenado y completo, a continuación una muestra de referencia:
    Anexo 1

MySQL Tuning Primer es un punto de partida excelente para la optimización de una base de datos MariaDB, pero sería prudente realizar investigaciones adicionales según las aplicaciones particulares que utilizará MariaDB en su servidor.

Recursos adicionales

Para complementar la información aquí presentada en esta guía puede consultar los siguientes recursos. Aunque este material es provisto esperando que sea útil, tome en cuenta que no podemos certificar su actualidad o precisión.

¿QUÉ DESEAS SABER?

Intentaremos leer tu mente...