Instalar MySQL/MariaDB

Alessio, Héctor Louzao, Ankur Sinha Versión F37 Last review: 2022-06-10
MySQL es un popular RDBMS (Sistema de Administración de Base de Datos Relacional). MariaDB nació como una bifurcación de MySQL. Hoy en día los dos productos son un poco diferentes. La migración de datos de un sistema a otro podría no ser una tarea trivial.

MariaDB está licenciada totalmente como GPLv2 mientras que MySQL tiene dos opciones de licencia, GPLv2 (para la edición Community) y Enterprise.

En los repositorios Fedora usted puede encontrar:

  • MariaDB 10.3 (como un paquete usual o como un módulo)

  • MariaDB 10.4 (como un módulo)

  • MySQL 8.0 Community Edition (como paquete normal o como módulo)

Los paquetes MariaDB y MySQL entran en conflicto porque proporcionan archivos similares. Por tanto, solo puede instalar uno de ellos, o bien MariaDB o MySQL, pero no ambos.

En adición puede además instalar la edición de MySQL community (8.0 o 5.7) desde el repositorio mantenido por el mismo Oracle/MySQL.

Instalar desde Oracle MySQL

Esta página analiza fuentes de software de terceros que no están afiliadas ni respaldadas oficialmente por el Proyecto Fedora. Úselas a su propia discreción. Fedora recomienda el uso de software libre y de código abierto, y evitar el software protegido por patentes.

Añadir el repositorio MySQL a Fedora

Descargue el paquete de lanzamiento proporcionado por Oracle desde: https://dev.mysql.com/downloads/repo/yum/ Una vez descargado, instálelo usando dnf:

sudo dnf install <ruta al rpm descargado>

Note que este repositorio está proporcionado por Oracle por tanto cualquier informe/defecto encontrado necesitará ser informado de ellos por medio de sus canales de comunicación: https://www.mysql.com/about/faq/

Instalar MySQL en Fedora

sudo dnf install mysql-server

Start MySQL Service and Enable at login:

sudo systemctl start mysqld
sudo systemctl enable mysqld

encuentra Contraseña Predeterminada, por razones de seguridad, MySQL genera una clave de root temporal. Tenga en cuenta que MySQL tiene normativas de seguridad más estrictas que MariaDB.

sudo grep 'temporary password' /var/log/mysqld.log

Configurar MySQL antes de la primera utilización

sudo mysql_secure_installation

Entonces, responda a las preguntas de seguridad como prefiera o simplemente diga yes a todas ellas.

Usar MYSQL

sudo mysql -u root -p

Desinstalar MySQL

Sugiero desinstalar en la siguiente manera, la manera más apropiada y segura sin borrar muchas dependencias es:

sudo rpm -e --nodeps mysql-community-libs mysql-community-common mysql-community-server

Instalar desde el Repo Principal de Fedora

La comunidad proporciona un paquete de MySQL en el repo principal.

sudo dnf install {community-mysql-server|mariadb-server}

Configurar MySQL/MariaDB

Habilita el servicio al arrancar y comenzar:

sudo systemctl enable {mysqld|mariadb}
sudo systemctl start  {mysqld|mariadb}

Configuring SQL before the first use

sudo mysql_secure_installation

Some questions will be asked: answer to them as you prefer; answering yes to all of them is perfectly fine.

Using SQL

sudo mysql -u root -p

Removing SQL

I suggest to remove in the following way:

sudo dnf remove {community-mysql-server|mariadb-server}

Instalar desde Podman

Descargar una Imagen SQL Server Docker

podman pull {mysql/mysql-server|mariadb/server}

Consultar Bitácoras

podman logs {mysql|mariadb}

Iniciar una Instancia de Servidor MySQL

Los siguientes comandos contienen la contraseña aleatoria generada para el usuario root;

podman logs mysql 2>&1 | grep GENERATED
podman run -d --name=mysql -e MYSQL_ROOT_PASSWORD=mypassword mysql/mysql-server

Iniciar una Instancia MariaDB Server

podman run -d --name=mariadb -ed MYSQL_ROOT_PASSWORD=mypassword mariadb/server
Password blank default for MariaDB
The -d option used for BOTH in the podman run command above makes the container run in the background. Use this command to monitor the output from the container:

Connecting to MySQL Server from within the Container

podman exec -it mysql mysql -uroot -p

you must reset the server root password by issuing this statement:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

Connecting to MariaDB Server from within the Container

podman exec -it mariadb bash

Reseting SQL_ROOT_PASSWORD

you must reset the server root password by issuing this statement:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

Stopping and Deleting a SQL Container

podman {start|stop|restart} {mysql|mariadb}

Deleting a SQL Container

podman rm {mysql|mariadb}
you can do the same with docker just change podman with docker.

Emplear el RDBMS

Conéctese al shell MySQL/MariaDB utilizando la instrucción mysql.

Para ambos de ellos, la instrucción es mysql. La sintaxis y las opciones son la mismas generalmente.

$ mysql -u root -p

Una vez que obtenga acceso a la shell puede obtener la versión en ejecución del software:

mysql> SELECT version();

Puede crear una base de datos:

mysql> create schema test;

Cree un usuario:

mysql> GRANT ALL PRIVILEGES ON test.* TO 'mi_usuario'@'localhost' IDENTIFIED BY 'CoNtRaSeÑa';

List the available databases:

mysql> show schemas;

Files location

The database disk storage is located in /var/lib/mysql.

Como Permitir Acceso Remoto en Comunidad MySQL/MariaDB/MYSQL

Añadir Regla Nueva para Firewalld

Abra el puerto SQL (3306) en FireWalld:

sudo firewall-cmd --permanent --zone=public --add-service=mysql

OR

sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp

Reiniciar firewalld.service

systemctl reinicia firewalld.service

Editar Archivos Conf:

Archivos de configuración:

  • MySQL → /etc/my.cnf/

  • Comunidad de MySQL → /etc/my.cnf.d/community-mysql-server.cnf

  • MariaDB → /etc/my.conf

puede asegurar eso con el comando siguiente rpm -qc [package].

Navegue a la línea que comienza con la directiva de dirección bind-address. Parecerá como esto: pudo establecer esta directiva a una dirección IP comodín, o bien *, ::, o 0.0.0.0:

bind-address            = 0.0.0.0

Tras cambiar esta línea, guarde y cierre el archivo y entonces reinicie el servicio MySQL:

sudo systemctl restart {mysqld|mariadb}

Creación de un USUARIO

CREATE USER 'su_nombre-usuario'@'dirección_ip_host' IDENTIFIED BY 'su_contraseña';
Sustituya su_nombre-usuario y su_contraseña dependiendo en que pueda el nombre de usuario y contraseña esté. Aquí, host_ip_addr es el nombre del host o dirección IP del equipo desde donde desea conectar al servidor MySQL/MariaDB. Además puede utilizar % como host_ip_addr si desea conectar desde cualquier equipo. Además puede ser algo como 192.168.2.% si quiere conectar desde equipos desde el intervalo de IP 192.168.2.1 - 192.168.2.254.

Conceder Acceso

GRANT ALL PRIVILEGES ON *.* TO 'su_nombre-usuario'@'%';
  IDENTIFIED BY 'mi-contraseña-nueva' WITH GRANT OPTION;

OR

Esto es común para gente que desea crear un usuario "root" que pueda conectar desde cualquier sitio, tal que como ejemplo, hará tan solo eso, pero para mejorar en esto crearemos un usuario root que pueda conectar desde cualquier sitio en el área local de red (LAN)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.100.%'
  IDENTIFIED BY 'mi-contraseña-nueva' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Conectar

mysql -u [USUARIO] -h [IP] -p

Cómo Solucionar Problemas en SQL

Versión:

dnf list installed | grep -i -e maria -e mysql -e galera

Comprobar parámetros en el archivo de configuración:

  • MySQL:

mysqld --print-defaults
  • Comunidad de MariaDB/MySQL:

/usr/libexec/mysqld --print-defaults
Compatibilidad entre versión diferente no está permitida. Tan solo instale una de ellas.

Como Acceder a Bitácoras de Error de SQL

A menudo, la causa raíz de las ralentizaciones, los bloqueos u otros comportamientos inesperados en SQL puede en muchos casos, los registros de errores se leen más fácilmente con el programa less, una línea de instrucción u

si SQL no se comporta como se espera, puede obtener más información sobre el origen del

  • systemctl status mysqld.service no arranca bien, ¿esta información no explica bien que esta pasando?, después de esta instrucción teclearía journalctl -xe -u mariadb -u mysqld.

  • Mire los archivos de bitácora, se pueden ubicar en /var/log/mysql/mysqld.log para MySQL y /var/log/mariabd para MariaDB.

Cómo solucionar errores de zócalos en SQL

SQL gestiona conexiones al servidor de base de datos mediante el uso de un archivo de zócalo (socket), un tipo especial de archivo que facilita las comunicaciones entre diferentes procesos. El archivo de zócalo del servidor MySQL se llama mysqld.sock y en los sistemas Ubuntu generalmente se almacena en el directorio /var/run/mysqld/. Este archivo lo crea automáticamente el servicio MySQL.

A veces, los cambios en el sistema o en la configuración de SQL pueden provocar que SQL no pueda leer el archivo de zócalo, impidiéndole acceder a sus bases de datos. El error de zócalo más común es el siguiente:

ERROR 2002 (HY000): No se puede conectar al servidor MySQL local a través del zócalo '/var/run/mysqld/mysqld.sock' (2)

Hay algunas razones por las que puede ocurrir este error y algunas formas posibles de resolverlo. Una causa común de este error es que el servicio SQL se detuvo o no se inició en primer lugar, lo que significa que no pudo crear el archivo de zócalo en primer lugar. Para saber si este es el motivo por el que ves este error, intenta iniciar el servicio con systemctl:

sudo systemctl start {mysqld|mariadb}

Luego, intenta acceder de nuevo al símbolo del sistema de MySQL. Si el error de socket persiste, revisa la ubicación donde tu instalación de MySQL busca el archivo de zócalo. Esta información puede ser encontrada en el archivo mysqld.cnf:

busque el parámetro zócalo en la sección [mysqld] de este archivo. Se verá así:

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306

Cierre este archivo y luego asegúrese de que el archivo mysqld.sock exista ejecutando una instrucción ls en el directorio donde SQL espera encontrarlo:

ls -a /var/run/mysqld/

Si el archivo de zócalo existe, lo verá en la salida de esta instrucción:

mysqld.pid  mysqld.sock  mysqld.sock.lock

si el archivo no existe, es posible que MySQL esté intentando crearlo, pero no tenga los permisos necesarios. Puede asegurarse de tener los permisos correctos cambiando la propiedad del directorio al usuario y grupo MySQL:

sudo chown mysql:mysql /var/run/mysqld/

Asegúrese de que el usuario MySQL tenga los permisos adecuados para el directorio. Configurarlos en 775 funcionará en la mayoría de los casos:

sudo chmod -R 755 /var/run/mysqld/

Finalmente, reinicia el servicio MySQL tal que pueda atender para crear el archivo de zócalo de nuevo:

sudo systemctl restart {mysqld|mariadb}

Luego, intenta acceder al símbolo del sistema de MySQL de nuevo. Si el error de zócalo persiste, es probable que haya un problema más grave con tu instancia de MySQL. En ese caso, deberías revisar el registro de errores para ver si encuentra alguna pista.