Tenho as seguintes concessões para um usuário / banco de dados
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 o acesso externo ao banco de dados, preciso alterar o host local para %
. Uma maneira de fazer isso é REVOKE
todas as permissões e defini-lo novamente. O problema é que existe um conjunto de senhas que eu não conheço; portanto, se eu revogar a permissão, não será possível restaurá-lo.
Existe uma maneira de alterar o nome do host localhost
para %
(e voltar novamente) sem revogar a própria permissão?
mysql
.user
SETHost
= 'localhost' ONDEuser
.Host
= '%' ANDuser
.User
= 'XXXdbusr';Melhor resposta no Stackoverflow, sugerindo usar
RENAME USER
quais cópias dos privilégios do usuário.O uso da Data Control Language (declarações como GRANT, REVOKE, RENAME e assim por diante) não requer
FLUSH PRIVILEGES;
e é exigido em arquitetura como Galera ou Replicação de Grupo, onde as tabelas MyISAM não são replicadas.fonte
Eu tropecei nessa também, e a solução proposta não funcionou, pois os privilégios específicos do banco de dados não seriam movidos também. o que eu fiz:
fonte
Para alterar privilégios, primeiro revogue toda a permissão para o usuário
fonte
Faltam muitas tabelas se você tiver outros privilégios que não sejam simplesmente db (como tabelas ou colunas etc). Dependendo do que o usuário concede, talvez seja necessário atualizar todas essas tabelas ou algumas:
fonte