¿Accediendo a una base de datos mysql desde un host / ip externo? (es decir: banco de trabajo mysql)

Tengo un servidor mysql ejecutándose en xxxx, y puedo acceder a él internamente sin problemas (por supuesto). Sin embargo, cuando bash conectarme externamente, es decir, usando mysql workbench o incluso desde un servidor externo, aparece el mensaje de error “Host ‘bla.bla.bla’ no puede conectarse a este servidor MySQL”.

He hecho:

  • GRANT ALL PRIVILEGES ON *.* TO mysql@xxxx IDENTIFIED BY "somepass";
  • Y abrí el puerto 3306 en iptables.

¿Hay otro problema de seguridad fundamental que me falta?

Necesitas hacer

 GRANT ALL PRIVILEGES ON *.* TO mysql@'bla.bla.bla' ... 

La parte después de @ es el host desde el que se realiza la conexión, por lo que ha permitido solo conexiones provenientes de localhost. Debe permitir el acceso desde cada host remoto necesario (o todos los hosts – ... mysql@'%' ... – si corresponde).

Para resolver esto, necesitas realizar los siguientes comandos:

 mysql -u root -p [enter in your password] CREATE USER 'mysqluser'@'%' IDENTIFIED BY 'aC0MPL3XPa33W0RD'; GRANT ALL PRIVILEGES ON *.* TO 'mysqluser'@'%' WITH GRANT OPTION; 

Tenía la situación exactamente similar. Mi MYSQL está instalado en un centOS. El camino al Nirvana es el siguiente.

  1. direccion de enlace: NO FUNCIONO
  2. otorgar permiso: NO FUNCIONO
  3. Iptables cuando está apagado: el trabajo DID.

SOLUCIÓN: Fui a pescar en las iptables e hice los siguientes cambios:

  1. Acceda a las iptables usando el comando: vim / etc / sysconfig / iptables
  2. Si encuentra los siguientes enunciados COMENTARIOS agregando un ‘#’ al comienzo de la línea.

    -A ENTRADA -s 123.123.123.123/32 -p tcp -m estado –Estado NUEVO -m tcp –dport 3306 -j ACEPTO

    -A INPUT -j REJECT –reject-with icmp-host-prohibited

    -A OUTPUT -p tcp -m tcp –dport 3306 -j ACCEPT

  3. Reinicie las iptables usando el comando: service iptables restart

Sí, eso funcionó para mí. Espero que sea útil para alguien.

Cuando obtuve mi servidor, incluso tuve el mismo problema al acceder a la aplicación de cliente mysql de MySQL, luego otorgué el permiso de Mysql, con la siguiente consulta.

funcionó bien

 **GRANT ALL PRIVILEGES ON db_base.* TO db_user @'%' IDENTIFIED BY 'db_passwd';** db_base is the database Name db_user is database User db_passwd is the database password 

Una vez que ejecutas esta descarga, con el siguiente comando FLUSH PRIVILEGES;

Supongamos que si está buscando otorgar privilegios para acceder a ciertas tablas en la Base de datos, puede usar el siguiente comando

 GRANT ALL PRIVILEGES ON db_base.HELLOWORLD TO db_user @'%' IDENTIFIED BY 'db_passwd'; 

Donde HELLOWORLD es la tabla Nombre

¿Te estás conectando como usuario mysql? Puede intentar ejecutar la consulta GRANT como: GRANT ALL PRIVILEGES ON *.* TO mysql@xxxx IDENTIFIED BY "somepass";

¿Has verificado que mysql workbench está intentando conectarse usando el nombre de usuario apropiado? ¿Has limpiado los privilegios después de ejecutar el comando de concesión?

No conozco los pormenores de la seguridad detrás de este asunto de la bind-address , solo estoy aprendiendo instalando un servidor Debian en una máquina de caja virtual. Este invitado tiene una tarjeta de red virtual configurada como puente, para que el rest de la casa pueda verla. Su IP es 192.168.1.4. Desde otra computadora (192.168.1.3), la conexión falló con bind-address = 127.0.0.1 . Configurar bind-address = 192.168.1.4 funciona bien. (su propia dirección, literalmente) Debe ser la interpretación de 127.0.0.1 dentro de una configuración virtual, no estoy seguro …

Comenta la línea:

 bind-address = localhost #bind-address = localhost < this is what it should look like. 

en tu MySQL mi archivo .conf Normalmente se encuentra en /etc/mysql/my.conf.