mysql não pede senha de root ao instalar

34

Eu usei o apt install mysql-server para instalar o MySQL no Ubuntu 16.04, mas durante a instalação, ele não solicitou a senha do root.

Após a instalação, recebi ERROR 1045 quando tentei fazer o login, pois root e mysql_secure_installation apresentaram o mesmo erro. Eu purge d e autoremove d então reinstalado mas não funciona.

Como eu poderia consertar isso? Posso definir a senha do root se não a configurei durante a instalação?

Este é o meu log de instalação:

% bl0ck_qu0te%     
por spqa 03.05.2016 / 16:04

4 respostas

36

Você pode recuperar ou definir a senha do root sem conhecer o atual, iniciando o mysql sem carregar as tabelas de permissões.

Por favor, note o $ nos comandos. Isso está especificando o prompt do terminal que você vê ao digitar o comando. Está mostrando que é uma linha de texto, mas o comando do terminal é digitado. O prefixo " mysql> " também é um prompt. Esse é o prompt que você recebe ao executar mysql interativamente.

Este é o cli (linha de comando) para fazer isso:
(Certifique-se de parar o servidor atual antes de executar as etapas. Apenas um servidor pode ser executado por vez.)

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld
$ sudo mysqld_safe --skip-grant-tables&

Agora você pode logar como root sem uma senha e executar todos os comandos, como neste caso, definir a senha root como root.

$ sudo mysql --user=root mysql

Esta é a senha root definida que você irá executar dentro do mysql se você tiver o MySQL 5.6 ou abaixo:

mysql> update user set Password=PASSWORD('new-password') where user='root';
flush privileges;

No MySQL 5.7 ou acima

mysql> update user set authentication_string=PASSWORD('new-password') where user='root';
flush privileges;

De lá, saia do mysql (mata o msqld em execução) e comece normalmente.

Notas sobre como iniciar e parar o serviço mysql:

Pare o mysql:

$ sudo service mysql stop

Inicie o mysql (normal):

$ sudo service mysql start

Mate a sessão temporária do modo de segurança mysql:

$ sudo mysqladmin shutdown
    
por L. D. James 03.05.2016 / 16:27
22

Ele não pedirá a senha durante a instalação do mysql no Ubuntu 16.04, mas você poderá defini-lo após a instalação bem-sucedida da seguinte maneira:

Após a conclusão da instalação do mysql, execute o comando:

sudo mysql_secure_installation

Ele mostrará:

% bl0ck_qu0te%

Enter current password for root (enter for none): (aqui pressione Enter)

% bl0ck_qu0te%

PARA UBUNTU 18.04 OU mysql-server versão 5.7.22, ESTE MÉTODO NÃO FUNCIONARÁ

Siga estas etapas para definir a senha de root em 18.04:

Como não há senha definida para o usuário root, simplesmente faça o login com senha em branco

sudo mysql -u root -p
Enter password: (press enter as no password is set)

depois, pode facilmente executar a consulta

ALTER USER 'root'@'locahost' IDENTIFIED BY '<password>';
    
por d a i s y 04.05.2016 / 06:55
13

Aparentemente, a instalação do servidor mysql no 16.04 (ou qualquer instalação 5.7?) permite acesso root não através de senha, mas através do auth_socket . Executar sudo mysql -u root (n.b., sem uma senha) lhe dará o console mysql enquanto que executar o comando como não-raiz solicitará uma senha.

Parece que alterar a senha não faz muita diferença, já que o backend de autenticação nem verifica a senha. Existe um artigo muito abrangente sobre como altere o plugin e mude para a autenticação de senha .

    
por carp 12.11.2016 / 10:57
0

Adicionando à resposta principal, se você está preso em

" mysqld_safe Iniciando o daemon mysqld com bancos de dados de / var / lib / mysql "

1 coisa para lembrar que você tem que usar outra janela de terminal para digitar o seguinte comando.

$ sudo mysql --user=root mysql

Se você tentar fazer isso na mesma janela, ele irá desligar o processo de safemode do mysqld.

    
por Mohd Abdul Mujib 15.09.2017 / 10:03