remota - ¿Cómo otorgar permisos de acceso remoto al servidor mysql para el usuario?
configurar phpmyadmin para conexion remota (9)
Abra el archivo /etc/mysql/mysql.conf.d/mysqld.cnf y comente la siguiente línea.
bind-address = 127.0.0.1
Si hago SHOW GRANTS
en mi base de datos mysql obtengo
GRANT ALL PRIVILEGES ON *.* TO ''root''@''localhost''
IDENTIFIED BY PASSWORD ''some_characters''
WITH GRANT OPTION
Si no me equivoco, root@localhost
significa que el usuario root
puede acceder al servidor solo desde localhost
. ¿Cómo le digo a MySQL que conceda a root
el permiso para acceder a este servidor mysql desde cualquier otra máquina (en la misma red) también?
Debe realizar algunos pasos para asegurarse de que primero se puede acceder desde el exterior a mysql y luego al usuario raíz:
Deshabilitar
skip-networking
demy.cnf
enmy.cnf
(es decir:/etc/mysql/my.cnf
)Verifique el valor de
bind-address
enmy.cnf
, si está configurado en127.0.0.1
, puede cambiarlo a0.0.0.0
para permitir el acceso desde todas las direcciones IP o desde cualquier IP desde la que desee conectarse.Conceda acceso remoto al usuario raíz desde cualquier ip (o especifique su ip en lugar de
%
)GRANT ALL PRIVILEGES ON *.* TO ''root''@''%'' IDENTIFIED BY ''your_root_password'' WITH GRANT OPTION; FLUSH PRIVILEGES;`
Reinicie el servicio de mysql:
sudo service mysql restart
Dos pasos:
configurar usuario con comodín:
create user ''root''@''%'' identified by ''some_characters''; GRANT ALL PRIVILEGES ON *.* TO ''root''@''%'' IDENTIFIED BY PASSWORD ''some_characters'' WITH GRANT OPTION
vim /etc/my.cnf
agregue lo siguiente:
bind-address=0.0.0.0
reinicie el servidor, no debería tener ningún problema para conectarse a él.
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 (mysql server ip) [portNo]
-Agregar regla de tabla ip para permitir conexiones en el puerto:
iptables -A INPUT -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:
service iptables stop
Espero que esto ayude.
Esas concesiones SQL que los demás están compartiendo hacen el trabajo. Si aún no puede acceder a la base de datos, es posible que solo tenga una restricción de firewall para el puerto. Depende de su tipo de servidor (y de los enrutadores intermedios) sobre cómo abrir la conexión. Abra el puerto TCP 3306 entrante y asígnele una regla de acceso similar para las máquinas externas (todo / subred / IP única / etc.).
Esto concede acceso de *.example.com
con la misma contraseña desde cualquier máquina en *.example.com
:
GRANT ALL PRIVILEGES ON *.* TO ''root''@''%.example.com''
IDENTIFIED BY ''some_characters''
WITH GRANT OPTION;
FLUSH PRIVILEGES;
Si la resolución del nombre no va a funcionar, también puede otorgar acceso por IP o subred:
GRANT ALL PRIVILEGES ON *.* TO ''root''@''192.168.1.%''
IDENTIFIED BY ''some_characters''
WITH GRANT OPTION;
FLUSH PRIVILEGES;
Esto funcionó para mí. Pero había un problema extraño: incluso yo primero probé aquellos que no afectaron. Actualicé la página phpmyadmin y conseguí que funcionara de alguna manera.
Si necesita acceso a local-xampp-mysql. Puede ir a xampp-shell -> abrir símbolo del sistema.
Luego mysql -uroot -p --port = 3306 o mysql -uroot -p (si hay una contraseña establecida). Después de eso, puede otorgar esos accesos desde la página de shell de mysql (también puede trabajar desde localhost / phpmyadmin).
Solo agregue estos si alguien encuentra este tema y tiene problemas para principiantes.
Tratar:
GRANT ALL PRIVILEGES ON *.* TO ''root''@''%'' IDENTIFIED BY ''Pa55w0rd'' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO ''root''@''%''
IDENTIFIED BY ''YOUR_PASS''
WITH GRANT OPTION;
FLUSH PRIVILEGES;
*.* = DB.TABLE
puede restringir al usuario a una base de datos específica y una tabla específica.
''root''@''%''
puede cambiar la raíz con cualquier usuario que haya creado y% es para permitir toda la IP. Puede restringirlo cambiando% .168.1.1 etc. también.