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 con REVOKE
todos los permisos y configurarlo nuevamente. El problema es que hay un conjunto de contraseñas que no conozco, por lo que si revoco el permiso, no puedo volver a configurarlo.
¿Hay alguna manera de cambiar el nombre localhost
de host a %
(y de nuevo) sin revocar el permiso mismo?
mysql
.user
SETHost
= 'localhost' DONDEuser
.Host
= '%' Yuser
.User
= 'XXXdbusr';La mejor respuesta en Stackoverflow sugiere utilizar
RENAME USER
qué copia de los privilegios del usuario.El uso del lenguaje de control de datos (declaraciones como GRANT, REVOKE, RENAME, etc.) no requiere
FLUSH PRIVILEGES;
y es necesario en arquitectura como Galera o Group Replication donde las tablas MyISAM no se replican.fuente
También me topé con este, y la solución propuesta no funcionó, ya que los privilegios específicos de la base de datos no se moverían también. lo que hice:
fuente
Para cambiar los privilegios, primero revoque todos los permisos para el usuario
fuente
Falta muchas de las tablas si tiene privilegios que no sean simplemente db (como tablas o columnas, etc.). Dependiendo de las subvenciones que tenga su usuario, es posible que deba actualizar todas estas tablas o algunas:
fuente