Configuración de mysql

Configuración de mysql server 5.7 en ubuntu 20

Por defecto la instalación de mysql es la versión 8.  Para solucionar esto, se deben actualizar los repositorios de mysql:

sudo wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb

luego se configura el repositorio

sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb

lo primero es seleccionar la opcion «Bionic» – importantísimo

Luego se actualizan los repositorios y se verifican las verisones disponibles

$ sudo apt-get update
$ sudo apt-cache policy mysql-server

si por alguna razón queda mal la configuración, se puede ejecutar el comando

$ sudo dpkg-reconfigure mysql-apt-config

Se instala la version de mysql

$ sudo apt install -f mysql-client=5.7.31-1ubuntu18.04
$ sudo apt install -f mysql-community-server=5.7.31-1ubuntu18.04
$ sudo apt install -f mysql-server=5.7.31-1ubuntu18.04

 

se puede verificar la versión de mysql

$ service mysql restart
$ mysql -u root -p

Fuente:   https://www.fosstechnix.com/how-to-install-mysql-5-7-on-ubuntu-20-04-lts/

 

Lo siguiente es abrir el puerto 3306.  Se edita el archivo

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

se buscan las lineas y se borran los comentarios. se usa 0.0.0.0 para poder acceder desde cualquier host.

skip-external-locking
bind-address = 0.0.0.0

Para definir el reconocimiento de mayúscula y minúscula.

# 2 para que no cambie; 1 para que cambie todo a minúscula 
lower_case_table_names=2 
service mysql restart

para verificar

apt install net-tools
netstat -tuple

Ahora se crea el usuario para conexion remota:

mysql -u root -p 

mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* tousername@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO username@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON namebd.* TO 'username'@'localhost';
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> EXIT;


En Mysql 8
GRANT ALL PRIVILEGES ON *.* TO 'invitado'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO invitado@localhost WITH GRANT OPTION;



Se amplia el tamaño de transferencia de paquetes.  Para ver los cambios aplicados es necesario reiniciar la consola de mysql (salir y volver a entrar).

SET GLOBAL max_allowed_packet=16777216;
SHOW VARIABLES LIKE 'max_allowed_packet';

 

En algunos de mis proyectos tengo que ejecutar la siguiente instrucción para que todo funcione:

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

y para que sea permanente añadir al final del mysqld.cnf (sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf ):

sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

 

para desinstalar:

sudo apt-get --purge remove mysql-client mysql-server mysql-common
sudo apt-get autoremove
sudo rm -rf /etc/mysql/