Pregunta:
Tengo las siguientes subvenciones para un usuario / base de datos
mysql> SHOW GRANTS FOR 'username'@'localhost';
+---------------------------------------------------------------------------+
| Grants for username@localhost |
+---------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY PASSWORD 'xxx' |
| GRANT ALL PRIVILEGES ON `userdb`.* TO 'username'@'localhost' |
+---------------------------------------------------------------------------+
Para habilitar el acceso externo a la base de datos, necesito cambiar localhost a %
. Una forma de hacerlo es REVOKE
todos los permisos y configurarlo de nuevo. El problema es que hay una contraseña configurada que no conozco, por lo que si revoco el permiso, no puedo volver a configurarlo.
¿Hay alguna manera de cambiar el nombre de host localhost
a %
(y viceversa) sin revocar el permiso en sí?
Respuesta:
Si tiene acceso a la base de datos mysql
, puede cambiar las tablas de concesión directamente:
UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='username';
… y una declaración UPDATE
análoga para volver a cambiarlo.
Además, es posible que también deba realizar cambios en la tabla mysql.db
:
UPDATE mysql.db SET Host='%' WHERE Host='localhost' AND User='username';
y luego enjuague para aplicar los privilegios:
FLUSH PRIVILEGES;