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 (as a regular package or as a module)

  • MariaDB 10.4 (as a module)

  • MySQL 8.0 community edition (as a regular package or as a module)

MariaDB and MySQL packages conflict because they provide similar files. So, you can only install one of them, either MariaDB or MySQL, but not both.

In addition you can also install MySQL commmunity edition (8.0 or 5.7) from the repository maintained by Oracle/MySQL itself.

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>

Please note that this repository is provided by Oracle so any issues/bugs encountered will need to be reported to them via their communication channels: 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

find Default Password, For security reasons, MySQL generates a temporary root key. Please note that MySQL has even stricter security policies than MariaDB.

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

Configuring MySQL before the first use

sudo mysql_secure_installation

Then, answer the security questions as you prefer. or just say yes to all of them.

Using MySQL

sudo mysql -u root -p

Removing MySQL

I suggest to remove in the following way, the most appropriate and safe way without removing many dependencies is:

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

Enable the service at boot and start:

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}

Starting a MySQL Server Instance

The command’s below contain the random password generated for the root user;

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

Starting a MariaDB Server Instance

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

Once gained access to the shell you can get the running version of the software:

mysql> SELECT version();

You can create a database:

mysql> create schema test;

Create a user:

mysql> GRANT ALL PRIVILEGES ON test.* TO 'my_user'@'localhost' IDENTIFIED BY 'PaSsWoRd';

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

Restart firewalld.service

systemctl restart firewalld.service

Editing Conf. Files:

Configuration files:

  • MySQL → /etc/my.cnf/

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

  • MariaDB → /etc/my.conf

you can ensure that with the following command rpm -qc [package].

Navigate to the line that begins with the bind-address directive. It will look like this: you could set this directive to a wildcard IP address, either *, ::, or 0.0.0.0:

bind-address            = 0.0.0.0

After changing this line, save and close the file and then restart the MySQL service:

sudo systemctl restart {mysqld|mariadb}

Creating a USER

CREATE USER 'your_username'@'host_ip_addr' IDENTIFIED BY 'your_password';
Replace your_username and your_password depending on what you want the username and password to be. Here, host_ip_addr is the hostname or IP address of the computer from where you want to connect to the MySQL/MariaDB server. You can also use % as host_ip_addr if you want to connect from any computer. It can also be something like 192.168.2.% if you want to connect from computers from the IP range 192.168.2.1 – 192.168.2.254.

Allow Access

GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'%';
  IDENTIFIED BY 'my-new-password' WITH GRANT OPTION;

OR

It is common for people to want to create a "root" user that can connect from anywhere, so as an example, we’ll do just that, but to improve on it we’ll create a root user that can connect from anywhere on the local area network (LAN)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.100.%'
  IDENTIFIED BY 'my-new-password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Connecting

mysql -u [USER] -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.