1
resposta

[Sugestão] Solução para: Host is not allowed to connect to this MySQL Server

Ao executar o comando Update-Database estive me deparando com o retorno:

Host 'meu_usuario' is not allowed to connect to this MySQL server

Vi que algumas pessoas também tiveram esse problema então vou deixar minha solução aqui como documentação.

O problema, em meu caso, acontecia devido ao método AutoDetect que era passado às opções do DbContext, logo a solução foi retirar esse método e passar a versão do meu MySQL de maneira manual para as opções.

Exemplo do código antes:

builder.Services.AddDbContext<FilmeContext>(opts => 
    opts.UseMySql(builder.Configuration.GetConnectionString("FilmeConnection"), ServerVersion.AutoDetect(builder.Configuration.GetConnectionString("FilmeConnection"))));

Exemplo do código após resolvido:

builder.Services.AddDbContext<FilmeContext>(opts => 
    opts.UseMySql(builder.Configuration.GetConnectionString("FilmeConnection"), 
        new MySqlServerVersion( new Version(8, 0 , 31))));
1 resposta

Olá, Samuel!

Obrigada por compartilhar sua solução com a comunidade, tenho certeza de que vai ajudar muitas pessoas que possam estar passando pelo mesmo problema.

Apenas para contextualizar melhor para quem possa estar lendo, o problema que o Samuel enfrentou ocorreu durante a execução do comando Update-Database, que é usado para aplicar as migrações pendentes ao banco de dados. O erro "Host 'meu_usuario' is not allowed to connect to this MySQL server" indica que o servidor MySQL não está permitindo a conexão do host especificado.

A solução proposta pelo Samuel foi alterar a forma como a versão do MySQL é detectada na configuração do DbContext. Antes, ele estava usando o método AutoDetect, que tenta determinar a versão do servidor MySQL automaticamente. No entanto, por algum motivo, isso estava causando o erro. Então, ele decidiu especificar a versão do MySQL manualmente, que no caso dele é a 8.0.31.

Aqui estão os trechos de código antes e depois da alteração:

Antes:

builder.Services.AddDbContext<FilmeContext>(opts => 
    opts.UseMySql(builder.Configuration.GetConnectionString("FilmeConnection"), ServerVersion.AutoDetect(builder.Configuration.GetConnectionString("FilmeConnection"))));

Depois:

builder.Services.AddDbContext<FilmeContext>(opts => 
    opts.UseMySql(builder.Configuration.GetConnectionString("FilmeConnection"), 
        new MySqlServerVersion( new Version(8, 0 , 31))));

Espero que esta explicação tenha ajudado a entender melhor a solução proposta pelo Samuel. Lembre-se de que esta solução pode não funcionar para todos, pois depende do contexto específico de cada um.

Espero ter ajudado e bons estudos!