J'ai les subventions suivantes pour un utilisateur / une base de données
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' |
+---------------------------------------------------------------------------+
Pour activer l'accès externe à la base de données, je dois changer localhost en %
. Une façon de faire est d'utiliser REVOKE
toutes les autorisations et de le définir à nouveau. Le problème est qu'il existe un mot de passe que je ne connais pas. Par conséquent, si je révoque l'autorisation, je ne peux pas le rétablir.
Existe-t-il un moyen de changer le nom localhost
d' hôte en %
(et de revenir) sans révoquer l'autorisation elle-même?
mysql
.user
SETHost
= 'localhost' WHEREuser
.Host
= '%' ETuser
.User
= 'XXXdbusr';Meilleure réponse sur Stackoverflow suggérant d'utiliser
RENAME USER
quelle copie les privilèges de l'utilisateur.L'utilisation du langage de contrôle des données (instructions telles que GRANT, REVOKE, RENAME, etc.) n'est pas
FLUSH PRIVILEGES;
requise et est requise dans une architecture telle que Galera ou la réplication de groupe dans laquelle les tables MyISAM ne sont pas répliquées.la source
Je suis tombé sur celui-ci également, et la solution proposée n'a pas fonctionné, car les privilèges spécifiques à la base de données ne seraient pas déplacés également. ce que j'ai fait:
la source
Pour modifier les privilèges, d'abord révoquer toutes les autorisations à l'utilisateur
la source
Manque beaucoup de tables si vous avez des privilèges autres que simplement db (comme des tables ou des colonnes, etc.). En fonction des subventions accordées à votre utilisateur, vous devrez peut-être mettre à jour toutes ces tables ou certaines d'entre elles:
la source