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
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: ...
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;
SELECT user,authentication_string,plugin,host FROM mysql.user;
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');
Para versiones más nuevas:
ALTER USER 'user'@'hostname' IDENTIFIED BY 'newPass';
otras forma:
UPDATE mysql.user SET Password=PASSWORD('nuevaContraseña') WHERE USER='nombreDeUsuario' AND Host='hostname';
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
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';
Otorgar privilegios
GRANT 'privilegios' ON basededatos.tabla TO 'nombre_usuario'@'localhost';
GRANT ALL PRIVILEGES ON `usuario\_%` . * TO 'usuario'@'localhost';
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';
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.
2
3
4
5
6
7