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/

