Cómo instalar MariaDB en CentOS 6

En este artículo veremos cómo instalar MariaDB en CentOS 6 paso a paso, de modo que puedas poner en marcha este motor de bases de datos relacionales en tu viejo servidor o VPS CentOS, con acceso remoto incluido.

Antes de instalar MariaDB en CentOS 6

Si quieres seguir esta guía de instalación y configuración de MariaDB en CentOS 6 necesitas cumplir sólo estos pequeños requisitos:

  • Una máquina CentOS 6 lo más actualizada posible.
  • Acceso a línea de comandos con root o un usuario con privilegios de sudo.
  • Conexión a Internet.

Cómo instalar MariaDB en CentOS 6

Para instalar MariaDB en CentOS 6 no encontraremos paquetes en los repositorios de la distribución, ni siquiera en el repositorio EPEL. Podría parecer una mala noticia, pero no lo es, porque vamos a instalar el repositorio oficial de MariaDB para CentOS 6.

Para ello crearemos un nuevo archivo de repositorio en /etc/yum.repos.d/:

~$ sudo nano /etc/yum.repos.d/mariadb.org.repo

Vamos a configurar este repositorio para la versión 10.3 de MariaDB, así que el contenido del archivo de repositorio será este:

# MariaDB 10.3 CentOS repository list - created 2019-10-28 23:35 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Este repositorio es para arquitectura amd64, pero si buscas para arquitectura x86 de 32 bits sólo tienes que sustituir esta línea:

...
baseurl = http://yum.mariadb.org/10.3/centos6-amd64
...

Por esta otra:

...
baseurl = http://yum.mariadb.org/10.3/centos6-x86
...

En cualquier caso, guardamos los cambios, cerramos el archivo y a continuación actualizamos las listas de paquetes:

~$ sudo yum update -y

El paquete que necesitamos se llama MariaDB-server (importan las mayúsculas), así que ya podemos instalarlo con yum:

~$ sudo yum install -y MariaDB-server

Tras la descarga e instalación del paquete MariaDB-server y sus dependencias se crea un nuevo servicio en CentOS 6, el servicio mysql, que por defecto no está iniciado. Sin embargo, la instalación de MariaDB sí habilita el servicio mysql para inciar automáticamente en cada arranque de CentOS 6.

Para inciar MariaDB de forma manual por vez primera, usaremos el comando service:

~$ sudo service mysql start

Para comprobar el estado del servicio MariaDB, usaremos la opción status del comando service:

~$ sudo service mysql status
 SUCCESS! MariaDB running (2718)

Cómo instalar el cliente de MariaDB en CentOS 6

El cliente de MariaDB para CentOS 6 se instala como dependencia de MariaDB Server, por lo que en este tutorial ya lo tendrías instalado en el sistema como el comando de consola mysql.

Pero si únicamente quieres instalar el cliente de MariaDB en CentOS 6, sin instalar el servicio, el paquete que necesitas es MariaDB-client, que puedes instalar con yum:

~$ sudo yum install -y MariaDB-client

Cómo configurar MariaDB en CentOS 6

Antes de configurar MariaDB en CentOS 6 debemos tener en cuenta que la configuración por defecto es bastante poco segura, ya que el usuario root no tiene contraseña, existe una base de datos de pruebas y usuarios anónimos.

Por suerte podemos remediar todo esto con el script interactivo mysql_secure_installation:

~$ sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
~$

Este comando nos permitirá:

  • Crear la contraseña del usuario root de MariaDB.
  • Eliminar los usuarios anónimos.
  • Deshabilitar el acceso remoto de root.
  • Y eliminar la base de datos de pruebas.

Archivos de configuración de MariaDB en CentOS 6

La configuración de MariaDB en CentOS 6 se guarda en el archivo /etc/my.cnf y en los archivos del directorio /etc/my.cnf.d/.

Cualquier cambio en estos archivos de configuración no se aplicará hasta que se reinicie el servicio:

~$ sudo service mysql restart

El plugin unix_socket

El plugin de autenticación por defecto a la hora de crear usuarios es mysql_native_password, que es la autenticación clásica mediante usuario y contraseña con cifrado simple. Sin embargo, el plugin unix_socket permite autenticarse sin contraseña, de modo que el usuario de CentOS 6 accede directamente con un usuario de MariaDB con el mismo nombre sin necesidad de contraseña.

Puede que te interese que root de MariaDB no tenga contraseña, para que ciertos procesos del sitema (que corran como root de CentOS 6) puedan realizar tareas de MariaDB como root.

Para hacer esto primero debemos hacer que MariaDB cargue el plugin unix_socket, ya que por defecto no lo hace y no funcionaría. Editamos el archivo server.cnf:

~$ sudo nano /etc/my.cnf.d/server.cnf

Buscamos la sección server y añadimos la directiva plugin-load-add:

...
[server]
plugin-load-add = auth_socket.so
...

Para aplicar los cambios, reiniciamos MariaDB:

~$ sudo service mysql restart

Ahora iniciamos sesión con el cliente mysql y root:

~$ mysl -u root -p

Y cambiamos el plugin de root:

> alter user root@localhost identified with unix_socket;

Refrescamos los permisos y salimos del cliente:

> flush privileges;
> exit

Ahora no podremos acceder con un usuario de CentOS distinto de root así:

~$ mysql -u root -p
Enter password:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Sino así:

~$ sudo mysql

O habiendo iniciado sesión en CentOS 6 como root:

~# mysql

Puedes aplicar esto mismo a tu usuario de trabajo en CentOS 6, creando un usuario de MariaDB con el mismo nombre y el plugin unix_socket.

Pero para usuarios usados por aplicaciones, interfaces web de administración, etc. usa el plugin por defecto mysql_native_passord, ya que por seguridad estos sistemas requieren el uso de clave.

Crear un usuario administrador alternativo

Podríamos querer disponer de un usuario administrador de MariaDB distinto de root, incluso con capacidades de acceso remoto.

Para ello iniciamos sesión con el cliente mysql (con el método de autenticación que hayas establecido):

~$ mysql -u root -p

Creamos el usuario:

> grant all privileges on *.* to usuario identified by 'XXXXXXXX' with grant option;

Ya está creado el usuario usuario con permisos sobre todas las bases de datos y usuarios. El hecho de llamarlo simplemente usuario en lugar usuario@localhost le da posibilidad de acceder remotamente.

Sólo queda refrescar los permisos de MariaDB y cerrar el cliente mysql:

> flush privileges;
> exit

Juego de caracteres UTF8

Al instalar MariaDB desde los repositorios de mariadb.org los juegos de caracteres para el servidor y las bases de datos se configuran por defecto como latin1, cuando lo recomendable sería utf8. Vamos a comprobarlo iniciando sesión con el cliente mysql y lanzando la siguiente consulta:

> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

>

Para cambiar estos valores por defecto, editaremos el archivo server.cnf:

~$ sudo nano /etc/my.cnf.d/server.cnf

Y añadiremos la directiva character_set_server en la sección server:

...
[server]
...
character_set_server=utf8
...

Guardamos lo cambios y reiniciamos el servicio. Si volvemos a conectar de nuevo al servicio y lanzamos la consulta anterior veremos lo siguiente:

> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

>

Ahora la codificación de caracteres está en sintonía con el sistema.

Acceso remoto a MariaDB en CentOS 6

Por defecto, MariaDB en CentOS 6 permite el acceso remoto, pero si tienes el firewall activado, que es la configuración por defecto de CentOS 6, deberás añadir una regla.

Configurar el firewall de CentOS 6 para el acceso remoto de MariaDB

En primer lugar comprobaremos las reglas existentes en la cadena INPUT de iptables:

~$ sudo iptables -L --line
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
2    ACCEPT     icmp --  anywhere             anywhere
3    ACCEPT     all  --  anywhere             anywhere
4    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
5    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
...

Vemos que la quinta regla rechaza todo el tráfico, así que tendremos que insertar nuevas reglas a partir de esa posición:

~$ sudo iptables -I INPUT 5 -m state --state NEW -p tcp --dport=3306 -j ACCEPT

Haremos los cambios permanentes guardando el estado de iptables:

~$ sudo service iptables save

Ahora podemos comprobar desde una máquina en la red con un cliente mysql instalado que la conexión es posible:

como instalar mariadb en centos 6

Hemos usado el comando mysql especificando con el parámetro -h la dirección del servidor CentOS 6 en el que está instalado el servicio MariaDB, y con el parámetro -u el usuario que creamos con acceso remoto.

Cómo desactivar el acceso remoto

Si deseas desactivar el acceso remoto a MariaDB, además de no abrir el puerto correspondiente en el firewall, edita el archivo server.cnf:

~$ sudo nano /etc/my.cnf.d/server.cnf

Y en la sección server añade la directiva bind_address:

...
[server]
...
bind-address = 127.0.0.1
...

Reinicia MariaDB:

~$ sudo service mysql restart

Desde este momento sólo serán posibles conexiones locales.

Conclusión

Ahora ya sabes cómo instalar y configurar MariaDB en CentOS 6 trabajando con una versión estable reciente, a la altura de las últimas versiones del sistema operativo. Y además serás capaz de trabajar tanto local como remotamente. Tanto para tus propios desarrollos como para soporte de aplicaciones, este importante pilar ya forma parte del sistema.

En caso de dudas, preguntas, sugerencias, etc. puedes dejar un comentario.

¡Apoya comoinstalar.me!

Y si te ha servido esta guía de instalación y configuración de MariaDB en CentOS 6 y quieres agradecérnoslo, puedes hacerlo con una mínima aportación al mantenimiento y creación de más tutoriales dejando una propina a partir de 1 $ desde PayPal:

¡Gracias!

Valora esta entrada

5/5 - (1 voto)

Deja un comentario