mySQL

Instalación

Para instalar mysql se pueden utilizar los paquetes mysql-server y mysql-client para instalar servidor y cliente respectivamente.

sudo apt install mysql-server

Una vez esto realizado es recomendable correr un script que agrega cierto nivel de seguridad a la instalación.

sudo mysql_secure_installation

Iniciar

Para iniciar en el usuario root sin contraseña:

sudo mysql
1

En caso de haberle dado una contraseña, -u para ingresar el usuario y el -p para la contraseña. mysql -u root -p

mysql -h servidor -u usuario -p
Enter password: ...
1
2

Mostrar las bases de datos

show databases;

Utilizar una base de datos

use nombre-base-de-datos;

Mostrar las tablas

show tables;

Crear una base de datos

mysql> CREATE DATABASE nombre_BD;

Eliminar una base de datos

mysql> DROP DATABASE nombre_de_la_BD;

Desconectar

mySQL> QUIT

Crear usuarios

CREATE USER usuario;

create user nuevo_usuario@'localhost';

Eliminar Usuario

DROP USER usuario;

Listar usuarios

select User from mysql.user;
1
SELECT user,authentication_string,plugin,host FROM mysql.user;
1

Ver detalles de la tabla:

desc mysql.user;

Modificar usuario

Asignar contraseña

Para versiones 5.7.5 o anteriores:

SET PASSWORD FOR 'nombreDeUsuario'@'hostname' = PASSWORD('nuevaContraseña');
1

Para versiones más nuevas:

ALTER USER 'user'@'hostname' IDENTIFIED BY 'newPass';
1

otras forma:

UPDATE mysql.user SET Password=PASSWORD('nuevaContraseña') WHERE USER='nombreDeUsuario' AND Host='hostname';
1
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
1

En lugar de caching_sha2_password es posible utilizar la anterior versión mysql_native_password, en caso de que se presenten problemas de compatibilidad.

CREATE USER 'tecnologo'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
1

Otorgar privilegios

GRANT 'privilegios' ON basededatos.tabla TO 'nombre_usuario'@'localhost';
1
GRANT ALL PRIVILEGES ON `usuario\_%` . * TO 'usuario'@'localhost';
1

El primer comando le otorga los privilegios al usuario nombre_usuario en la tabla tabla de la base de datos basededatos, el segundo comando le otorga todos los privilegios a todas las tablas de todas las bases de datos que comiencen con su nombre. Este ultimo es útil para permitir que un usuario pueda administrar las bases de datos restringido por su nombre, o algun prefijo.

privilegios:

  • ALL PRIVILEGES
  • CREATE
  • DROP
  • DELETE
  • INSERT
  • SELECT
  • UPDATE
  • GRANT OPTION : permite remover privilegios de usuarios.

Ejemplo:

Privilegios

grant all on nombre_de_base_de_datos.* to 'nuevo_usuario'@'localhost';

Permitir acceso desde el exterior

DESACONSEJADO!

CREATE USER 'tecnologo'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
1

Habilitar en el firewall: sudo ufw allow mysql

Permitir el acceso a mysql desde el exterior:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

# If MySQL is running as a replication slave, this should be
# changed. Ref https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_tmpdir
# tmpdir                = /tmp
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 0.0.0.0 // Modificar esta linea la cual originalmente apunta a localhost.
1
2
3
4
5
6
7
Last Updated: 10/20/2020, 7:35:55 PM
Contributors: Diego Mascheroni