Falha na conexão do Sequel Pro e do MySQL

97

Acabei de instalar o mysql no mac do Homebrew

brew install mysql

mysql -V

mysql  Ver 8.0.11 for osx10.13 on x86_64 (Homebrew)

do terminal funciona e posso fazer login no mysql, mas do Sequel Pro diz

insira a descrição da imagem aqui

Não foi possível conectar ao host 127.0.0.1 ou a solicitação expirou.

Certifique-se de que o endereço está correto e de que você possui os privilégios necessários ou tente aumentar o tempo limite de conexão (atualmente 10 segundos).

O MySQL disse: O plugin de autenticação 'caching_sha2_password' não pode ser carregado: dlopen (/usr/local/lib/plugin/caching_sha2_password.so, 2): imagem não encontrada

não consigo descobrir o que estou perdendo

Hattori Hanzō
fonte

Respostas:

187

Isso porque o Sequel Pro ainda não está pronto para um novo tipo de login de usuário, como afirma o erro: não há driver.

mysql + homebrew

Basicamente, você terá que realizar algumas ações manualmente, no entanto, seus dados de banco de dados não serão excluídos como na solução abaixo

  • Vá para o arquivo my.cnf e na [mysqld]linha de adição de seção :

    default-authentication-plugin=mysql_native_password

  • Faça login no servidor mysql a partir do terminal: execute mysql -u root -p, em seguida, dentro do shell, execute este comando (substituindo [senha] por sua senha real):

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[password]';

  • saia do shell mysql com exite execute brew services restart mysql.

Deveria trabalhar.

Correção rápida (método destrutivo)

Correção rápida para instalações não caseiras:

Apple Logo > System Preferences > MySQL > Initialize Database, digite sua nova senha e selecione 'Usar senha legada'

Após reiniciar, você deve conseguir se conectar. Faça isso somente em novas instalações, porque você pode perder suas tabelas de banco de dados.


my.cnf

O arquivo my.cnf está localizado em /etc/my.cnf no Unix / Linux


Alternativas

Para aqueles que ainda estão lutando com os problemas do Sequel Pro: Sequel Pro era um ótimo produto, mas com toneladas de problemas não resolvidos e o último lançamento datado de 2016, talvez seja uma boa ideia procurar algumas alternativas. Existe um fork do SequelPro chamado SequelAce que parece ser bastante estável e atualizado, ele mantém uma funcionalidade semelhante, aparência e comportamento semelhantes, mas ao mesmo tempo é desprovido de problemas antigos do Sequel Pro
Maciej Kwas
fonte
14
Não consigo encontrar o MySQL nas Preferências do Sistema
Hattori Hanzō
2
obrigado por explicar, mas não consigo localizar o my.cnfarquivo em minha máquina (macOS High Sierra 10.13.5)
Hattori Hanzō
2
Se esse arquivo não existir, você terá que criar um: por favor, dê uma olhada neste tópico: stackoverflow.com/questions/7973927/…
Maciej Kwas
14
Funcionou muito bem em um novo brew install mysqluso/usr/local/etc/my.cnf
mintwhip de
5
Eu não usei uma senha, então usei ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';- funcionou para mim
Vincent Tang
37

TL; DR: O Sequel Pro está morto desde 2016. Não faça downgrade do seu banco de dados por causa de uma ferramenta. Passe para uma ferramenta alternativa.

Atualização 2020: Sequel Pro está oficialmente morto, mas não oficialmente vivo! Você pode encontrar as compilações " noturnas " que não têm esse problema (ou seja, suporte para Mysql 8 auth) aqui: https://sequelpro.com/test-builds


Todas as outras soluções aqui recomendam alterar suas configurações de banco de dados (tornando-o menos seguro, conforme anunciado pelo MySQL) para a ferramenta que você está usando. Isso não é aceitável para mim.

Sempre fui um grande fã do Sequel Pro, até doei para ele. Mas, com toda a minha paixão e amor, sinto muito se a ferramenta não teve nenhum lançamento desde 2016 . YOLO, e eu preciso seguir em frente!

A alternativa que encontrei (em https://stackoverflow.com/a/55235533/2321594 , graças a @arcseldon) é o DBeaver, que oferece suporte ao novo método de autenticação (não legado) do MySQL 8.

PS. O único truque no lado da ferramenta, não no lado do banco de dados, é quando você está criando uma conexão MySQL 8, você pode precisar ir para "Propriedades do driver" (mais tarde pode ser encontrado em Editar conexão) e transformar o valor de allowPublicKeyRetrievalpara true.

Eu precisava disso para me conectar ao meu contêiner MySQL criado usando Docker. Para ter o IP do MySQL visível para o exterior, para qualquer outro aplicativo em seu ecossistema (não apenas esta ferramenta), você deve criar um novo usuário no MySQL, ou passar -e MYSQL_ROOT_HOST=%no tempo de execução ou como um ENV.

Auxílio em
fonte
Eu acredito que @Aidin você me deu um downvote apenas porque minha resposta não resolve o problema de OP. É apenas um desenvolvimento local e configurações locais - então qual é o ponto? Tenho mesmo de abandonar o software com o qual estou familiarizado e com o qual gosto de trabalhar só porque me dizes?
Maciej Kwas 01 de
5
Por favor, não leve para o lado pessoal, @MaciejKwas. Apesar de fornecer mais explicações aqui, o que agradeço, ainda mantenho meu voto. Os três motivos principais são: 1) Manter configurações diferentes entre dev / prod não é recomendado no desenvolvimento de software moderno. É, na verdade, o fator X de 12factor.net/dev-prod-parity . 2) As pessoas também podem usar essas ferramentas para verificar o produto. Você pode criar um ssh-tunnel / proxy e chegar ao seu banco de dados prod por meio de uma ferramenta GUI. Nesses casos, o downgrade da autenticação do banco de dados não é uma opção. 3) Não me adaptar a mudanças e atualizações é algo que pessoalmente não valorizo.
Aidin
1
Estou voltando para um projeto MySQL que não executei localmente em alguns anos, b / c, ele tem sido sólido como uma rocha e estou tão triste em saber que a sequência profissional está morta :(
Catfish
Escolha também o driver MySQL +8 no DBeaver, pois há vários drivers para escolher. Nas propriedades do driver, defina allowPublicKeyRetrieval como true e salve.
Peheje,
18
  1. Supondo que você não tenha uma configuração mysql , repita o seguinte para~/.my.conf
[mysqld]
default-authentication-plugin=mysql_native_password
  1. Faça login no mysql commysql -u root -p
  2. Defina a senha do usuário root ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[PASSWORD]';onde [PASSWORD]está uma senha de sua escolha.
  3. Reinicie o mysql com, por exemplobrew services restart mysql
Ilias Karim
fonte
10

O Sequel Pro está oficialmente morto e não oferece mais suporte aos novos recursos do MySql. No entanto, a boa notícia é que ele foi substituído pelo Sequel Ace, que está disponível no GitHub e na App Store . O aplicativo é gratuito e parece um substituto oficial do Sequel Pro já que a postagem foi feita por um dos colaboradores do Sequel Pro .

Ps. Decidi postar isso como uma resposta, já que outros não mencionaram que agora existe um substituto atualizado para o Sequel Pro

Alexander Kucheryuk
fonte
Obrigado pela notícia, muito apreciada.
Hattori Hanzō
Finalmente! Estou esperando há um tempo.
Jonny
6

Se você se conectar ao MySQL via [email protected], certifique-se de redefinir sua senha também!

ALTER USER 'root'@'127.0.0.1' IDENTIFICADO COM mysql_native_password BY '[password]';

Xeno
fonte
Estou recebendo:ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 50, found 49. Created with MySQL 80012, now running 80013. Please use mysql_upgrade to fix this error.
Chance Smith
tente isso no terminal: mysql_upgrade --force -uroot -p
Xeno
mysql_upgrade agora está obsoleto e não funcionará, use mysqld --upgrade = FORCE ao invés.
ilovecookiez11
1

Se alguém está enfrentando esse problema e instalou MySQL version >8por meio de .dmgdownload no link oficial. Nesse caso, use esta orientação .

Amrendra
fonte
1
Usar uma senha de estilo antigo funcionou para mim. Obrigado!
Richard Witherspoon
1

Está funcionando para mim. se você está recebendo este erro:

Não foi possível conectar ao host 127.0.0.1 ou a solicitação expirou.

Certifique-se de que o endereço está correto e de que você possui os privilégios necessários ou tente aumentar o tempo limite de conexão (atualmente 10 segundos).

O MySQL disse: O plugin de autenticação 'caching_sha2_password' não pode ser carregado: dlopen (/usr/local/lib/plugin/caching_sha2_password.so, 2):

Por favor, tente esta solução

insira a descrição da imagem aqui

Golam Sorwar
fonte
Funcionou como um encanto.
Jimmy Adaro