Si lo 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 root
el permiso para acceder a este servidor mysql desde cualquier otra máquina (en la misma red) también?
mysql
connection
grant
Aufwind
fuente
fuente
localhost
a%
otorgará acceso root a la red pública. No olvidesflush privileges;
Respuestas:
Esto otorga acceso de root con la misma contraseña desde cualquier máquina en
*.example.com
:Si la resolución de nombres no va a funcionar, también puede otorgar acceso por IP o subred:
Documentos de
GRANT
sintaxis de MySQL .fuente
...TO 'root'@'%' IDENTIFIED...
que otorgaría acceso desde todas partes?SHOW GRANTS
todavía muestra lo mismo (como en mi pregunta). Incluso lo hiceFLUSH PRIVILGES
. ¿Hay algo que extraño?FLUSH PRIVILEGES
. Cierre la sesión y vuelva a iniciarla, reinicie el servicio mysqld si tiene acceso. Además, asegúrese de que laskip networking
línea no esté habilitada en sumy.cnf
aunque eso no explicaría queSHOW GRANTS
aún no sea el mismo.IDENTIFIED BY PASSWORD
se acompaña de un número hexadecimal de 41 dígitos con hash. ÚseloIDENTIFIED BY 'password'
si desea incluir la contraseña directamente.Tratar:
fuente
Pa55w0rd
parece una estupidez, no me digas que es la contraseña que quieres hacer. ¿Para todos los que intentan iniciar sesión en su mysql?FLUSH PRIVILEGES;
Debe seguir algunos pasos para asegurarse de que primero se pueda acceder a mysql y luego al usuario root desde el exterior:
Disable
skip-networking
enmy.cnf
(es decir:/etc/mysql/my.cnf
)Verifique el valor de
bind-address
inmy.cnf
, si está configurado en127.0.0.1
, puede cambiarlo a0.0.0.0
para permitir el acceso desde todas las IP o desde cualquier IP desde la que desee conectarse.Otorgue acceso remoto al usuario root desde cualquier ip (o especifique su ip en lugar de
%
)Reinicie el servicio mysql:
fuente
*.* = 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 todas las direcciones IP. Puede restringirlo cambiando% .168.1.1, etc. también.Si eso no se resuelve, modifique también my.cnf o my.ini y comente estas líneas
bind-address = 127.0.0.1
para#bind-address = 127.0.0.1
y
skip-networking
para#skip-networking
Raspberry Pi, encontré la configuración de la dirección de enlace en
\etc\mysql\mariadb.conf.d\50-server.cnf
fuente
*.*
y'user'@'address'
. ¡Gracias! :)Esas subvenciones de SQL que los demás comparten funcionan. 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 del tipo de servidor (y de los enrutadores intermedios) en cuanto a cómo abrir la conexión. Abra el puerto TCP 3306 de entrada y dele una regla de acceso similar para máquinas externas (todas / subred / IP única / etc.).
fuente
Abra el
/etc/mysql/mysql.conf.d/mysqld.cnf
archivo y comente la siguiente línea:fuente
En mi caso, estaba intentando conectarme a un servidor mysql remoto en cent OS. Después de pasar por muchas soluciones (otorgar todos los privilegios, eliminar enlaces de IP, habilitar la red), el problema aún no se resolvía.
Resultó que, mientras buscaba 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.
-Agregar la regla de la tabla de IP para permitir conexiones en el puerto:
-No recomendaría esto para el entorno de producción, pero si sus iptables no están configuradas correctamente, es posible que agregar las reglas no resuelva el problema. En ese caso, se debe hacer lo siguiente:
Espero que esto ayude.
fuente
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.
fuente
Con mysql 8 y versiones posteriores, no puede agregar un usuario otorgando privilegios. significa con esta consulta:
mysql devolverá este error:
esto significa que no tiene un usuario root para% domain. por lo que primero debe insertar el usuario y luego otorgar privilegios como este:
No olvide reemplazar las contraseñas con sus contraseñas específicas.
fuente
Esto funcionó para mí. Pero había un problema extraño que incluso yo probé primero a los que no afectaba. Actualicé la página phpmyadmin y de alguna manera lo hice funcionar.
Si necesita acceso a local-xampp-mysql. Puede ir a xampp-shell -> abrir el 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 otorgarles acceso 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.
fuente
Ubuntu 18.04
Instale y asegúrese de que mysqld us en ejecución.
Vaya a la base de datos y configure el usuario raíz:
Edite los permisos de mysqld y reinicie:
Desde otra máquina, prueba .. El puerto de Obvs (3306) en la máquina mysqld debe permitir la conexión desde la máquina de prueba.
Toda la "seguridad" adicional de MySql no ayuda a la seguridad en absoluto, solo complica y ofusca, ahora es más fácil estropearlo que en los viejos tiempos, donde solo usaba una contraseña realmente larga.
fuente