Notas

Notas, scripts, algoritmos de uso diario y documentación de algunos proyectos.

View on GitHub
7 March 2021

MySQL

by Juan Manuel González Garzón

MySQL

I. Instalar y configurar.

A. Instalar los paquetes cliente & servidor.

# En Ubuntu.
sudo apt install mysql-client mysql-server

B. Instalar base de datos.

sudo mysql_secure_installation
  1. Put the root password
  2. Keep the root password
  3. Remove anonymous users
  4. Disallow root login remotely
  5. Remove test database and access to it
  6. Reload privilege tables

C. Abrir puertos en el firewall.

# --permanent: Para cuando se desea dejar el puerto abierto permanentemente.
firewall-cmd --add-port=3306/tcp # --permanent
# Si se está usando iptables (Aún no entiendo este bien).
iptables -A INPUT -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT

II. Crear una base de datos, un usuario y dar acceso

Esta operación se hace como usuario root.

sudo mysql -u root -p
-- Crea la base de datos.
CREATE DATABASE db_name; 
-- Establece un usuario y su contraseña.
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
-- Dar todos los privilegios sobre la base de datos al usuario que se creó.
USE db_name;
GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'localhost';
FLUSH PRIVILEGES;

Ya se puede acceder a la base de datos con ese usuario.

$ mysql -u username -p db_name

Carga y volcado de datos

# Cargar datos desde un archivo, ejecutando un script desde una terminal.
$ mysql -u username -p database < script.sql

# Volcar datos.
# Opción 1:
$ mysqldump [options] [db_name [tbl_name ...]] > dump.sql
# Opción 2:
$ mysqldump [options] [db_name [tbl_name ...]] --result-file=dump.sql

Resetear la contraseña del usuario root

Se va a configurar MySQL para que inicie sin ‘Grant Tables’ y asi poder cambiar la contraseña. Por seguridad también se deshabilitan las conexiones por la red.

sudo systemctl stop mysql
sudo systemctl edit mysql

……. En el archivo que se abre, se escribe:

[Service]
ExecStart=
ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking

…….

sudo systemctl daemon-reload
sudo systemctl start mysql
sudo mysql -u root
-- Editar la contraseña
ALTER USER 'root'@'localhost' IDENTIFIED
WITH caching_sha2_password -- Para MySQL, no la usan en MariaDB.
BY 'new_password';
sudo systemctl revert mysql
# Debe salir:
# Removed /etc/systemd/system/mysql.service.d/override.conf.
# Removed /etc/systemd/system/mysql.service.d.
sudo systemctl daemon-reload
systemctl restart mysql

Creditos y referencias

Mysql icons created by Freepik - Flaticon

tags: databases