He instalado MySQL Community Edition 5.5 en mi máquina local y quiero permitir conexiones remotas para poder conectarme desde una fuente externa.
¿Cómo puedo hacer eso?
sudo mysql_secure_installation
. FYI.
He instalado MySQL Community Edition 5.5 en mi máquina local y quiero permitir conexiones remotas para poder conectarme desde una fuente externa.
¿Cómo puedo hacer eso?
sudo mysql_secure_installation
. FYI.
Respuestas:
Eso está permitido por defecto en MySQL.
Lo que está deshabilitado por defecto es el root
acceso remoto . Si desea habilitar eso, ejecute este comando SQL localmente:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Y luego encuentre la siguiente línea y coméntela en su my.cnf
archivo, que generalmente vive /etc/mysql/my.cnf
en los sistemas Unix / OSX. En algunos casos, la ubicación del archivo es /etc/mysql/mysql.conf.d/mysqld.cnf).
Si se trata de un sistema Windows, puede encontrarlo en el directorio de instalación de MySQL, generalmente algo así C:\Program Files\MySQL\MySQL Server 5.5\
como el nombre del archivo my.ini
.
Cambio de línea
bind-address = 127.0.0.1
a
#bind-address = 127.0.0.1
Y reinicie el servidor MySQL ( Unix / OSX y Windows ) para que los cambios surtan efecto.
my.cnf
archivo y no encuentran una bind-address
directiva, tenga en cuenta que en mi caso (MySQL versión 14.14 en Ubuntu 16.04.2) la ubicación del archivo era/etc/mysql/mysql.conf.d/mysqld.cnf
Después de hacer todo lo anterior, aún no podía iniciar sesión de root
forma remota, pero Telnetting al puerto 3306
confirmó que MySQL
estaba aceptando conexiones.
Comencé a mirar a los usuarios en MySQL y noté que había múltiples usuarios root con diferentes contraseñas.
select user, host, password from mysql.user;
Entonces MySQL
, configuré todas las contraseñas para root nuevamente y finalmente pude iniciar sesión de forma remota como root
.
use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;
update user set authentication_string=password('YOUR_PASSWORD') where user='root';
Solo una nota de mi experiencia, puede encontrar el archivo de configuración en esta ruta /etc/mysql/mysql.conf.d/mysqld.cnf
.
(Luché por algún tiempo para encontrar este camino)
sudo find /etc -iname 'mysql*.cnf'
En mi caso, estaba tratando de conectarme a un servidor mysql remoto en OS Cent. Después de pasar por muchas soluciones (otorgar todos los privilegios, eliminar enlaces de IP, habilitar la conexión en red), el problema aún no se resolvió.
Al final resultó que, mientras buscaba en varias soluciones, me encontré con iptables, lo que me hizo darme cuenta de que el puerto mysql 3306 no aceptaba conexiones.
Aquí hay una pequeña nota sobre cómo verifiqué y resolví este problema.
telnet (ip del servidor mysql) [portNo]
iptables -A ENTRADA -i eth0 -p tcp -m tcp --dport 3306 -j ACEPTAR
servicio iptables stop
Espero que esto ayude.
Siga los pasos mencionados a continuación para configurar el acceso remoto comodín para el usuario de MySQL.
(1) Abrir cmd.
(2) navegue a la ruta C: \ Archivos de programa \ MySQL \ MySQL Server 5.X \ bin y ejecute este comando.
mysql -u root -p
(3) Ingrese la contraseña de root.
(4) Ejecute el siguiente comando para proporcionar el permiso.
OTORGUE TODOS LOS PRIVILEGIOS EN *. * A 'NOMBRE DE USUARIO' @ 'IP' IDENTIFICADO POR 'CONTRASEÑA';
NOMBRE DE USUARIO: Nombre de usuario que desea conectar al servidor MySQL.
IP: dirección IP pública desde donde desea permitir el acceso al servidor MySQL.
CONTRASEÑA: Contraseña del nombre de usuario utilizado.
La IP se puede reemplazar con% para permitir que el usuario se conecte desde cualquier dirección IP.
(5) Limpie los previleges siguiendo el comando y salga.
ENJUAGUE PRIVILEGIOS;
salida; o \ q
Si el proceso de su servidor MySQL está escuchando en 127.0.0.1 o :: 1 solamente, entonces no podrá conectarse de forma remota. Si tiene una bind-address
configuración en /etc/my.cnf
esto, podría ser la fuente del problema.
También tendrá que agregar privilegios para un no localhost
usuario.
127.0.0.1
?
Si instaló MySQL brew
, realmente solo escucha en la interfaz local de forma predeterminada. Para solucionarlo, debe editar /usr/local/etc/my.cnf
y cambiar bind-address
de 127.0.0.1
a *
.
Entonces corre brew services restart mysql
.
Todo el proceso de inicio de sesión remoto. El inicio de sesión remoto está desactivado de forma predeterminada. Debe abrirlo manualmente para todas las IP ... para dar acceso a todas las IP
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
Ip específico
GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_desire_ip' IDENTIFIED BY 'password';
entonces
flush privileges;
Puede verificar su host de usuario y contraseña
SELECT host,user,authentication_string FROM mysql.user;
Ahora tu deber es cambiar esto
bind-address = 127.0.0.1
Puedes encontrar esto en
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
si no encuentra esto allí, intente esto
sudo nano /etc/mysql/my.cnf
comentar en esto
#bind-address = 127.0.0.1
Luego reinicie Mysql
sudo service mysql restart
Ahora disfruta del inicio de sesión remoto
Solo para tu información, me saqué el pelo con este problema durante horas ... finalmente llamé a mi proveedor de alojamiento y descubrí que, en mi caso, usando un servidor en la nube que en el panel de control para 1 y 1 tienen un firewall secundario que debes clonar y agregar puerto 3306. Una vez agregado, me metí directamente ...
Este blog Cómo configurar un servidor MySQL en una red de área local será útil para configurar un servidorMySQL
desde cero
Y para las personas con OS X, tenga en cuenta que el parámetro bind-address generalmente se establece en launchd plist y no en el archivo my.ini. Entonces, en mi caso, me quité <string>--bind-address=127.0.0.1</string>
de /Library/LaunchDaemons/homebrew.mxcl.mariadb.plist
.
~/Library/LaunchAgents
Si mysqld
tiene una dirección de enlace establecida en una dirección de bucle de retorno / local (por ejemplo 127.0.0.1
), el servidor no será accesible desde hosts remotos, porque no se puede acceder a una interfaz de bucle de retorno desde ningún host remoto.
Establezca esta opción en 0.0.0.0
( ::
para IPv4 + 6) para aceptar conexiones desde cualquier host u otra dirección de acceso externo si solo desea permitir conexiones en una interfaz.
Habilitar el acceso raíz remoto puede ser peligroso. Sería preferible configurar cuentas de usuario con permisos más restrictivos. Los siguientes tres pasos deberían hacerlo.
Asegúrese de que la línea que comienza bind-address ...
al menos esté comentada en su archivo my.ini o my.cnf. Si no existe, sigue adelante. Puede encontrar este archivo en C:\ProgramData\MySQL\MySQL Server 8.0
Windows.
Luego, verifique que la cuenta de usuario con la que está estableciendo la conexión no se encuentra localhost
en el campo Coincidencia de límites a hosts. Si bien no se recomienda, en su lugar, puede colocar %
ese campo para fines de prueba. Puede hacerlo abriendo una conexión local al servidor con MySQL Workbench, luego vaya a Servidor> Usuarios y privilegios desde la barra de menú y busque la cuenta de usuario con la que desea conectarse.
El campo "Limitar a la coincidencia de hosts" es lo que no le permite conectarse de forma no local. Es decir, limita las conexiones aceptadas a un patrón de direcciones IP. Idealmente, debe acceder al servidor MySQL desde una dirección IP estática o subred, para que pueda ser lo más restrictivo posible.
algunas veces necesitan usar el nombre de la PC en Windows
primer paso) poner en el archivo de configuración de mysql:
mysqld.cnf SET dirección-enlace = 0.0.0.0
(para permitir recibir conexiones a través de tcp / ip)
segundo paso) hacer usuario en mysql, usuarios de tabla, con el nombre de la PC en las propiedades de Windows , NO ip