Não foi possível conectar via MySQL Workbench ao host local no Ubuntu 16.04 (raiz sem senha)

17

O site da Oracle parece sugerir que funciona apenas nos dias 15 e 14. http://dev.mysql.com/downloads/workbench/

Também duas das minhas máquinas Ubuntu 16.04 parecem não conseguir se conectar (erros de acesso são negados para root)

Cenário

Ele instala bem. Abre bem. Mas ele não se conectará ao localhost.

Alguém tem alguma sorte?

Jonathan
fonte
Você construiu a partir da fonte? Qual é o erro exato dado? Semelhante a quando você especifica uma senha incorreta?
Sim, é semelhante. Mas o root não tem senha. E eu posso conectar ao root na linha de comando corretamente. E verifiquei todos os privilégios e corri. FLUSH PRIVILEGES; Nesse ponto, estou curioso para saber se alguém pode se conectar ao host local a partir dos 16 anos, já que o site da Oracle diz explicitamente apenas 14 e 15
Jonathan
Não vi a Oracle afirmar que não funciona, apenas não vi um binário para o Xenial. No entanto, vejo o mysql-workbench aqui, packages.ubuntu.com/xenial/mysql-workbench . Esse erro não parece ser um erro de compatibilidade de software. Ative o registro no mysql e aumente o nível de registro para 2 e veja se o registro mostra sua solicitação.
@ bc2946088 mysql-workbenchestá no repositório do universo para o link
Videonauth 16/16
você checou alguma das 4 opções? ;-) O WB funciona perfeitamente para mim (com 5,7 btw). Prova abaixo.
Rinzwind

Respostas:

27

O problema provavelmente ocorre porque a autenticação de soquete está ativada para o usuário root por padrão quando nenhuma senha é definida durante a atualização para o 16.04. Esta ressalva importante está documentada nas notas de versão 16.04 :

O comportamento da senha quando a senha raiz do MySQL está vazia foi alterada. O empacotamento agora permite a autenticação de soquete quando a senha raiz do MySQL está vazia. Isso significa que um usuário não root não pode efetuar login como usuário root do MySQL com uma senha vazia.

Por qualquer motivo, o MySQL Workbench que acompanha o 16.04 não funciona imediatamente com o servidor MySQL, pelo menos para mim. Tentei usar o "soquete / tubulação local" para conectar-se de várias maneiras diferentes, mas sem sucesso.

A solução é reverter para a autenticação de senha nativa. Você pode fazer isso efetuando login no MySQL usando autenticação de soquete, fazendo:

sudo mysql -u root

Uma vez logado:

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

que reverterá para a autenticação de senha nativa (padrão antigo). Se você tentou algum outro método para corrigir o problema, verifique se o campo "plugin" no mysql.user está definido como "auth_token", o que pode exigir o uso de mysqld_safe para fazer login no MySQL no caso de você tenho mexido com as coisas, como eu fiz.

Os nossos agradecimentos à publicação de Miguel Nieto no blog por esta solução.

Mike M
fonte
Incrível, eu nunca teria percebido isso.
11136 Jonathan
Isso foi corrigido, mas na próxima vez em que corri para atualizar, ele quebrou novamente.
Jonathan
Qual foi a saída do apt update?
Mike M
Eu não vê-lo, porque eu não notei até a próxima vez que eu corri mysql, muito mais tarde
Jonathan
Eu me pergunto se isso é uma coisa 16,04 Ubuntu ou uma coisa mysql 5,7 (era Oracle ou Canonical que fez essa mudança?)
Jonathan
22

O MySQL 5.7 e versões posteriores não suportam a conexão como "root", mysql-workbenchportanto, você deve criar um usuário normal e se conectar através disso.

sudo mysql -u root -p

Crie um usuário chamado "admin" e use-o para conectar-se mysql-workbench.

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
Jonathan
fonte
Esta resposta foi perfeita para mim, obrigado Jonathan.
Chris Evans
2
Isso funciona para o Ubuntu 18.04
tadeubarbosa
Perfeito. Obrigado (18.04.2)
Ron Nuni
4

Essa pergunta pode ter dois anos, mas meu trabalho com o mysql-workbench hoje à noite parece ter me dado a resposta.

usuário root agora usuários autenticação auth_socket por padrão. A única maneira de o root obter acesso é fazendo login como root.

Eu descobri isso executando mysql -u rootambos, como usuário root e usuário padrão.

Não funcionaria no usuário padrão.

Então minha próxima pergunta foi - em qual usuário o mysql-workbench roda. Acontece que ele é executado como usuário padrão por padrão. Para fazê-lo funcionar como usuário root, ele deve ser executado a partir do root. Então entrei na CLI do usuário root e digite 'mysql-workbench'.

Eu então tive que entrar nas configurações do usuário root, como mostrado aqui. O local do arquivo é válido para uma instalação do ubuntu 18.04.

Configurações de conexão raiz mysql-workbench.

Se esse local do soquete for inválido, você precisará acessar a CLI do mysql a partir de root ou sudo e executar o seguinte comando.

Comando CLI do MySQL para encontrar o soquete.

Depois de ter as configurações corretas, teste a conexão. Deve ser bem sucedido e você está pronto para ir.

George Tasker
fonte
Obrigado por isso! Eu não deveria ter que reverter as alterações relacionadas à segurança na autenticação para oferecer suporte a uma ferramenta mais antiga, quando posso dizer à ferramenta para conectar-se usando o método mais recente.
Aaron
Consigo obter uma conexão local por esse caminho? Não entendo por que não podemos nos conectar através do TCP / IP.
john gonidelis
2

Funciona bem para mim e eu não fiz nada de especial. Instale mysql-server-5.7e trabalhe na linha de comando, configure um usuário com uma senha e configure as permissões normais do banco de dados (também com o método normal).

insira a descrição da imagem aqui

E com um banco de dados e tabela:

insira a descrição da imagem aqui

Rinzwind
fonte
Interessante. Ame a referência discworld. Quando reconfiguro os pacotes mysql, não recebo uma solicitação para alterar a senha. Você? Estou inclinado a pensar que tenho uma instalação corrompida ou algum conflito. Acho que devo receber uma solicitação para alterar a senha root.
31516 Jonathan
1

Crie uma conta de usuário com privilégios administrativos apropriados que possam se conectar via mysql workbench usando o plugin auth_socket. Observe que isso não funciona para conexões raiz com o servidor mysql .

Efetue logon no mysql a partir de uma sessão do terminal:

$sudo mysql

Se você conseguir fazer isso, o plug-in auth_socket será ativado e a conta raiz será autenticada usando esse plug-in. Note que esta é a configuração padrão ao instalar o mysql no ubuntu depois de executar o script de instalação segura.

Primeiro, crie um usuário mysql para sua conta 'valerie':

mysql> CREATE USER 'valerie'@'localhost' IDENTIFIED WITH auth_socket;

Habilite privilégios administrativos para a conta:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'valerie'@'localhost' WITH GRANT OPTION;

Saia do shell:

mysql> exit

Então, no mysql workbench:

  1. Crie uma nova conexão
  2. Selecione o método de conexão como soquete / tubo local
  3. Defina o caminho do soquete / tubulação como: /var/run/mysqld/mysqld.sock (observe que este é o caminho para um sistema Debian / Ubuntu e altera para outros tipos de Linux)
  4. Defina o nome de usuário ('valerie' neste exemplo)

Você deve conseguir se conectar ao servidor mysql com esta conexão.

David
fonte
0

tente isso

selecione banco de dados mysql

1: use mysql;

2: UPDATE conjunto de usuários plugin = 'mysql_native_password' em que Usuário = 'root';

3: privilégios de liberação;

4: saída;

~ $ serviço sudo mysql restart

URI
fonte
0

Servidor MySQL no host da AWS executando o Ubuntu 16.04; mysql-workbench no laptop Ubuntu 16.04; usa a conexão KeyPair.

Depois de configurar a conexão db de teste estava funcionando. Mas a conexão real sempre falhava com uma mensagem como a postada por Jonathan Leaders. ~/.mysql/workbench/logVerificou o log em e encontrou algumas mensagens de "permissão negada" .

Agora posso obter o mysql-workbench para trabalhar: sudo mysql-workbench

E depois eu posso ir e chmodos diretórios que precisam de permissão.

Usman Suleman
fonte
2
Esta é uma resposta para a pergunta?
precisa saber é o seguinte