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: ...
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.