una - Habilitar la conexión remota de MySQL: ERROR 1045(28000): acceso denegado para el usuario
habilitar acceso remoto mariadb (12)
MySQL 5.1.31 ejecutándose en Windows XP.
Desde el servidor MySQL local (192.168.233.142) me puedo conectar como root de la siguiente manera:
>mysql --host=192.168.233.142 --user=root --password=redacted
Desde una máquina remota (192.168.233.163), puedo ver que el puerto mysql está abierto:
# telnet 192.168.233.142 3306
Trying 192.168.233.142...
Connected to 192.168.233.142 (192.168.233.142).
Pero cuando trato de conectarme a mysql desde la máquina remota , recibo:
# mysql --host=192.168.233.142 --user=root --password=redacted
ERROR 1045 (28000): Access denied for user ''root''@''192.168.233.163'' (using password: YES)
Tengo solo 2 entradas en mysql.user:
Host User Password
--------------------------------------
localhost root *blahblahblah
% root [same as above]
¿Qué más debo hacer para habilitar el acceso remoto?
EDITAR
Como sugiere Paulo a continuación, intenté reemplazar la entrada mysql.user para% con una entrada específica de IP, por lo que mi tabla de usuario ahora se ve así:
Host User Password
------------------------------------------
localhost root *blahblahblah
192.168.233.163 root [same as above]
Luego reinicié la máquina, pero el problema persiste.
Intenta
flush privileges
nuevamente.Intenta reiniciar el servidor para volver a cargar las concesiones.
Intente crear un usuario con el host "192.168.233.163". "%" parece no permitir todo (es raro)
El controlador MySQL ODBC 3.51 es que no se manejan los caracteres especiales en la contraseña.
"Advertencia: es posible que tenga un dolor de cabeza grave con MySQL ODBC 3.51 si la contraseña de su comando GRANT contiene caracteres especiales, como! @ # $% ^?. El controlador ODBC ODBC 3.51 de MySQL no admite estos caracteres especiales en el cuadro de contraseña. El único mensaje de error que recibiría es "Acceso denegado" (usando la contraseña: SÍ) "- de http://www.plaintutorials.com/install-and-create-mysql-odbc-connector-on-windows-7/
En mi caso, estaba intentando conectarme a un servidor mysql remoto en el sistema operativo Cent. Después de pasar por muchas soluciones (otorgando todos los privilegios, eliminando enlaces de IP, habilitando la red), el problema todavía no se solucionaba.
Resultó que, mientras investigaba varias soluciones, me encontré con iptables, lo que me hizo darme cuenta de que el puerto 3306 de mysql no aceptaba conexiones.
Aquí hay una pequeña nota sobre cómo revisé y resolví este problema.
Verificando si el puerto está aceptando conexiones:
telnet (servidor mysql ip) [portNo]
Agregar regla de tabla ip para permitir conexiones en el puerto:
iptables -A ENTRADA -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
No recomendaría esto para el entorno de producción, pero si sus iptables no están configuradas correctamente, agregar las reglas podría no resolver el problema. En ese caso, se debe hacer lo siguiente:
servicio de parada de iptables
Espero que esto ayude.
Estaba luchando con el inicio de sesión remoto a MYSQL para mi instancia de Amazon EC2 Linux. Encontré que la solución era asegurarme de que mi grupo de seguridad incluyera una regla de entrada para el puerto MySQL 3306 para incluir mi dirección IP (o 0.0.0.0/0 para cualquier parte). Inmediatamente pude conectar de forma remota tan pronto como agregué esta regla.
La ayuda de Paulo me llevó a la solución. Fue una combinación de lo siguiente:
- la contraseña contenía un signo de dólar
- Estaba intentando conectarme desde un shell de Linux
El shell bash trata el signo de dólar como un carácter especial para la expansion a una variable de entorno, por lo que debemos escapar con una barra diagonal inversa. A propósito, no tenemos que hacer esto en el caso en que el signo de dólar sea el carácter final de la contraseña.
Como ejemplo, si su contraseña es "pas $ word", desde Linux bash debemos conectarnos de la siguiente manera:
# mysql --host=192.168.233.142 --user=root --password=pas/$word
La combinación de usuario / host puede haberse creado sin contraseña.
Asumí que al agregar un nuevo host para un usuario existente (usando una aplicación GUI), la contraseña existente también se usaría para la nueva combinación de usuario / host.
Podría iniciar sesión con
mysql -u username -p PASSWORD
localmente, pero no desde IPADDRESS con
mysql -u --host=HOST -p PASSWORD
(De hecho, pude iniciar sesión desde IPADDRESS sin usar una contraseña)
mysql -u --host=HOST
Establecer la contraseña de acceso permitido:
set password for ''<USER>''@''<IPADDRESS>'' = ''<PASSWORD>'';
Nueva ubicación para el archivo de configuración de mysql es
/etc/mysql/mysql.conf.d/mysqld.cnf
Por defecto en el servidor MySQL, el acceso remoto está deshabilitado. El proceso para proporcionar un acceso remoto al usuario es.
- Ir a mi carpeta bin sql o agregarlo a
PATH
- Inicie sesión en root mediante
mysql -uroot -proot
(o cualquiera que sea la contraseña de root). - En caso de éxito obtendrás
mysql>
- Proporcione acceso de concesión para todo ese usuario.
GRANT ALL PRIVILEGES ON *.* TO ''username''@''IP'' IDENTIFIED BY ''password'';
Aquí IP es la dirección IP para la que desea permitir el acceso remoto, si ponemos %
cualquier dirección IP puede acceder de forma remota.
Ejemplo:
C:/Users/UserName> cd C:/Program Files (x86)/MySQL/MySQL Server 5.0/bin
C:/Program Files (x86)/MySQL/MySQL Server 5.0/bin>mysql -uroot -proot
mysql> GRANT ALL PRIVILEGES ON *.* TO ''root''@''%'' IDENTIFIED BY ''root'';
Query OK, 0 rows affected (0.27 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.25 sec)
Esto para otro usuario.
mysql> GRANT ALL PRIVILEGES ON *.* TO ''testUser''@''%'' IDENTIFIED BY ''testUser'';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
Espero que esto ayude
Recibí el mismo error después de otorgar acceso remoto hasta que hice esto:
Desde /etc/mysql/my.cnf
En las versiones más nuevas de mysql, la ubicación del archivo es /etc/mysql/mysql.conf.d/mysqld.cnf
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
(Comente esta línea: bind-address = 127.0.0.1
)
A continuación, ejecute el service mysql restart
.
Tiene un firewall ? asegúrese de que el puerto 3306 esté abierto.
En Windows, de forma predeterminada, se crea la cuenta raíz de mysql que tiene permiso para tener acceso desde localhost solo a menos que haya seleccionado la opción para habilitar el acceso desde máquinas remotas durante la instalación.
creando o actualizando el usuario deseado con ''%'' como nombre de host.
ejemplo:
CREATE USER ''krish''@''%'' IDENTIFIED BY ''password'';
Tienes que poner esto como root:
GRANT ALL PRIVILEGES ON *.* TO ''USERNAME''@''IP'' IDENTIFIED BY ''PASSWORD'' with grant option;
;
donde IP es la IP que desea permitir el acceso y USERNAME es el usuario que usa para conectarse
Si desea permitir el acceso desde cualquier IP, simplemente ponga %
lugar de su IP
y luego solo tienes que poner
FLUSH PRIVILEGES;
O reinicia el servidor mysql y listo.
si está utilizando una dirección IP dinámica, simplemente conceda acceso a 192.168.2.%, por lo que ahora no tiene que preocuparse por otorgar acceso a su dirección IP cada vez.