Conexiones externas MYSQL

En caso de no poder acceder desde otro equipo a las dbo de Mysql lo activaremos así.

Paso 1

Modificar el archivo de configuración de MySQL:

sudo nano /etc/mysql/my.cnf

Buscaremos las siguientes líneas y se descomentarán en caso de estar comentadas:

  • skip-external-locking
  • bind-address = 127.0.0.1

La IP que le vamos a dar a bind-address será 0.0.0.0. En caso de que tengáis una IP específica a la que queráis dar acceso, simplemente ponedla.

Paso 2

En este paso se reiniciará el servicio de MySQL para que se apliquen los cambios:

sudo service mysql restart

Paso 3

Hay que dar permisos específicos de acceso al usuario de la base de datos. Yo para desarrollo siempre utilizo usuario root y contraseña root, pero cada uno que ponga el suyo. Antes de nada, hay que entrar a la consola de MySQL: (esto es un ejemplo no debemos dar nunca acceso a root desde fuera)

mysql –u root -p

Tras esto, se le dan los privilegios al usuario en cuestión. En este caso root:

GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Comandos utiles Mysql

Crear un usuario en mysql
CREATE USER ‘nombre_usuario’@’localhost’ IDENTIFIED BY ‘tu_contrasena’;

Otorgar permisos a un usuario en una base de datos:

Este caso es conceder lectura y escritura a la base de datos para el usuario en local
GRANT ALL PRIVILEGES ON bdo_name.* TO ‘nombre_usuario’@’localhost’; si ponemos % daremos acceso desde cualquier IP, si ponemos la IP en concreto, daremos acceso sobre esa IP

Este caso es conceder lectura y escritura a la base de datos para el usuario en cualquier ubicacion, si ponemos una ip, concederiamos a nivel IP
GRANT ALL PRIVILEGES ON bdo_name . * TO ‘nombre_usuario’@’%’;

Este caso es conceder lectura a la base de datos para el usuario en cualquier ubicacion, si ponemos una ip, concederiamos a nivel IP
GRANT ALL SELECT ON bdo_name . * TO ‘nombre_usuario’@’localhost’;

A continuación una lista breve de otras posibilidades de permisos comunes que un usuario podría tener:

  • ALL PRIVILEGES: tal como vimos antes, esto permitiría que un usuario MySQL accediera completamente a la base de datos designada (o si no se selecciona una base de datos en particular, el usuario tendría acceso a todo el sistema);
  • CREATE: les permite a los usuarios crear nuevas tablas o bases de datos;
  • DROP: les permite eliminar tablas o bases de datos;
  • DELETE: les permite eliminar filas de tablas;
  • INSERT: les permite insertar filas en tablas;
  • SELECT: les permite usar el comando SELECT para consultar información en bases de datos;
  • UPDATE: les permite actualizar filas en tablas;
  • GRANT OPTION: les permite otorgar o suprimir privilegios de otros usuarios de la manera que vimos anteriormente, esto le daría a un usuario MySQL todo el acceso a una base de datos designada (o si no se selecciona una base de datos en particular, a todo el sistema).
  • revoke all privileges on *.* from usuario;
  • set password for ‘pepe’@’localhost’ = password(‘trustno1’); esto sirve para cambiar la contraseña de un usuario dentro de mysql.
  • Listar usuarios, y desde donde pueden conectarse
  • select user,host from mysql.user;
  • Listar permisos completo de un usuario
  • show grants for username;
  • Listar usuarios y base de datos a las cuales pueden acceder
  • select u.User,Db from mysql.user u,mysql.db d where u.User=d.User;
  • Para crear una base de datos usaremos el siguiente comando CREATEDATABASE bdo-name
Comando para importar un base de datos a nuestro mysql
mysql -u username -p new_database < data-dump.sql
https://www.linuxito.com/seguridad/612-listar-todos-los-usuarios-que-tienen-acceso-a-una-base-de-datos-en-mysql

Centos, no se porque motivo en la versión 8, me ha dado varios problemas, tener en cuenta, que cuando instalamos mysql en centos, despues de una tediosa instalación, estos son los comandos que deberemos usar:
create user ‘zabbix’@’localhost’ IDENTIFIED with mysql_native_password BY ‘password’;
GRANT ALL PRIVILEGES ON zabbix.* TO’zabbix’@’localhost’;