O mysql não pede senha de root ao instalar

54

Eu costumava apt install mysql-serverinstalar o MySQL no Ubuntu 16.04, mas durante a instalação, ele não solicitou senha de root.

Após a instalação, cheguei ERROR 1045quando tentei fazer o login roote mysql_secure_installationjoguei o mesmo erro. Eu purgeed autoremoveentão reinstalado, mas ele não funciona.

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

Este é o meu log de instalação:

Os seguintes pacotes adicionais serão instalados:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server-5.7
  mysql-server-core-5.7
Pacotes sugeridos:
  mailx tinyca
Os seguintes NOVOS pacotes serão instalados:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server mysql-server-5.7
  mysql-server-core-5.7
0 atualizado, 6 recém-instalado, 0 para remover e 0 não atualizado.
Precisa obter 0 B / 17,9 MB de arquivos.
Após esta operação, 160 MB de espaço em disco adicional serão usados.
Você quer continuar? [S / n] y
Pré-configurando pacotes ...
Selecionando o pacote anteriormente não selecionado libaio1: amd64.
(Lendo arquivos e diretórios do banco de dados ... 227144 atualmente instalados.)
Preparando para descompactar ... / libaio1_0.3.110-2_amd64.deb ...
Descompactando libaio1: amd64 (0.3.110-2) ...
Selecionando o pacote anteriormente não selecionado mysql-client-core-5.7.
Preparando para descompactar ... / mysql-client-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
Descompactando mysql-client-core-5.7 (5.7.12-0ubuntu1) ...
Selecionando o pacote anteriormente não selecionado mysql-client-5.7.
Preparando para descompactar ... / mysql-client-5.7_5.7.12-0ubuntu1_amd64.deb ...
Descompactando mysql-client-5.7 (5.7.12-0ubuntu1) ...
Selecionando o pacote anteriormente não selecionado mysql-server-core-5.7.
Preparando para descompactar ... / mysql-server-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
Descompactando mysql-server-core-5.7 (5.7.12-0ubuntu1) ...
Selecionando o pacote anteriormente não selecionado mysql-server-5.7.
Preparando para descompactar ... / mysql-server-5.7_5.7.12-0ubuntu1_amd64.deb ...
Descompactando mysql-server-5.7 (5.7.12-0ubuntu1) ...
Selecionando o pacote mysql-server anteriormente não selecionado.
Preparando para descompactar ... / mysql-server_5.7.12-0ubuntu1_all.deb ...
Descompactando mysql-server (5.7.12-0ubuntu1) ...
Processando gatilhos para libc-bin (2.23-0ubuntu3) ...
Processando gatilhos para man-db (2.7.5-1) ...
Processando gatilhos para systemd (229-4ubuntu4) ...
Processando gatilhos para ureadahead (0.100.0-19) ...
Configurando libaio1: amd64 (0.3.110-2) ...
Configurando o mysql-client-core-5.7 (5.7.12-0ubuntu1) ...
Configurando o mysql-client-5.7 (5.7.12-0ubuntu1) ...
Configurando o mysql-server-core-5.7 (5.7.12-0ubuntu1) ...
Configurando o mysql-server-5.7 (5.7.12-0ubuntu1) ...
update-alternative: usando /etc/mysql/mysql.cnf para fornecer /etc/mysql/my.cnf (my.cnf) no modo automático
Verificando se é necessária atualização.
Esta instalação do MySQL já foi atualizada para 5.7.12, use --force se você ainda precisar executar o mysql_upgrade
Configurando o mysql-server (5.7.12-0ubuntu1) ...
Processando gatilhos para libc-bin (2.23-0ubuntu3) ...
spqa
fonte

Respostas:

61

Você pode recuperar ou configurar a senha root sem conhecer a 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 um comando terminal digitado real. O mysql>prefixo " " também é um prompt. Esse é o prompt que você recebe ao executar o mysql interativamente.

Este é o cli (linha de comando) para fazer isso:
(Certifique-se de interromper o servidor atual antes de executar as etapas. Somente 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 efetuar login 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ê 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 superior

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

A partir daí, saia (mate o msqld) do mysql e inicie-o 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 do mysql:

$ sudo mysqladmin shutdown
LD James
fonte
11
no mysql 5.7.12 não há coluna chamada senha na tabela de usuários. Portanto, seguir o comando funcionou para mim. atualizar conjunto de usuários authentication_string = PASSWORD ('new-password') em que user = 'root';
O código
7
Eu ainda estou recebendo #ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
llamerr
@ ErelSegal-Halevi Há duas coisas que você deve fazer. Corra $ mysql_upgrade -u root -p. Tente também o comando acima fornecido por RP Singh.
LD James
Também ainda estou recebendo esse erro.
Jamie Hutber 02/01
SET PASSWORD FOR 'root' = PASSWORD('your-password')se você estiver usando mariadb
user1036719
37

Ele não solicitará a senha durante a instalação mysqlno Ubuntu 16.04, mas você poderá defini-la 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á:

NOTA: EXECUTAR TODAS AS PEÇAS DESTE SCRIPT É RECOMENDADO PARA TODOS OS SERVIDORES MariaDB EM USO DE PRODUÇÃO! LEIA CADA PASSO COM ATENÇÃO!

Para fazer login no MariaDB para protegê-lo, precisaremos da senha atual do usuário root. Se você acabou de instalar o MariaDB e ainda não definiu a senha de root, a senha ficará em branco, então pressione Enter aqui.

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

OK, senha usada com sucesso, seguindo em frente ...

A configuração da senha raiz garante que ninguém possa efetuar login no usuário raiz MariaDB sem a devida autorização.

Set root password? [Y/n] y   (press 'y' to set new password)
New password: 
Re-enter new password:

Senha atualizada com sucesso! Recarregando tabelas de privilégios .. ... Sucesso!


Para o Ubuntu 18.04 OR mysql-serverversão 5.7.22, este método não funcionará

Para definir a senha root no Ubuntu 18.04, Primeiro siga os três primeiros comandos ou as duas primeiras etapas da resposta de LD James e execute:

mysql> alter user 'root'@'localhost' identified by '<password>';

A senha do usuário root está definida!

OU

Siga estas etapas para definir a senha root no 18.04:

Como não há senha definida para o usuário root, basta fazer o login com uma senha em branco

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

depois disso pode facilmente executar consulta

ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
margarida
fonte
2
O problema no caso desta pergunta é que o usuário não pode acessar as solicitações mencionadas porque não conhece a current password for root.
LD James
@LDJames sim, você está certo. Não me lembro do erro: 1405 quando corro, mysql_secure_installationmas sudo mysql_secure_installationtrabalhei para mim. A instalação do mysql não pede senha. Aconteceu comigo o mesmo. e here press entersignifica pressionar enter sem senha.
Daisy
2
Como concers Ubuntu 18.04 ou debian 9+ não irá se conectar com senha em branco e até mesmo depois de reiniciar passagem para o root, ele ainda se recusa a ligar
chefarov
@chefarov enfrentando o mesmo problema, intensamente frustrante
RedactedProfile
Na verdade, ainda recebo o mesmo erro
Jamie Hutber
16

Aparentemente, a instalação do mysql-server no 16.04 (ou qualquer instalação 5.7?) Permite o acesso root não através da senha, mas através do plugin auth_socket . A execução sudo mysql -u root(nb w / oa password) fornecerá o console mysql, enquanto a execução do comando como não raiz solicita uma senha.

Parece que alterar a senha não faz muita diferença, pois o back-end de autenticação nem verifica a senha. Há um artigo muito abrangente sobre como alterar o plug-in e mudar para autenticação por senha .

carpa
fonte
4
Consegui confirmar com uma nova instalação apt install mysql-serversem especificar uma senha no 18.04. O sintoma e a solução são exatamente como descritos.
EricC
então como diabos eu me conecto?
Jamie Hutber
9

Após a instalação, basta:

1

sudo mysql

(sim, nenhum usuário não passa)

2.Você está agora no console do mysql:

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

3)

FLUSH PRIVILEGES;

  1. É isso aí. Agora você pode entrar no console da próxima vez, como de costume:

    mysql -u raiz -p meu_novo_pass

DimiDak
fonte
3
Tentei muitas outras respostas, mas esta funcionou no Amazon EC2
Haris ur Rehman
2
Esta foi a resposta correta para o WSL Ubuntu (Linux no Windows).
Fer García
2
Esta é a única resposta que funcionou para mim na nova instalação do ubuntu 18.04 no google cloud.
Aakash 17/06
11
Trabalhou para mim no Ubuntu 19.04. Eu executei o mysql_secure_myinstallation, mas parecia que a senha do root não estava definida.
Jens Wagemaker
11
Eu tentei dezenas de soluções. Este foi o mais fácil e o único que funcionou.
mreff555 10/10
4
  1. existe uma conta de usuário padrão.

    $ vim /etc/mysql/debian.cnf 
    

    você obterá esta conta assim:

    user     = debian-sys-maint
    password = nUZTARYslBsASzpw
    
  2. você faz login com esta conta

    $ mysql -u debian-sys-maint -p
    
  3. editar sua senha root

    mysql> show databases;
    
    mysql> use mysql;
    
    mysql> update user set authentication_string=PASSWORD("new_password") where user='root';
    
    mysql> update user set plugin="mysql_native_password";
    
    mysql> flush privileges;
    
    mysql> quit;
    
  4. reinicie o mysql

    $ /etc/init.d/mysql restart;
    

então você pode mysql -u root -pcom você a configuração anterior.

pwxcoo
fonte
Eu tentei todas as outras soluções, e essa é a única que funcionou para mim. (Linux Mint 19.2).
ElectroBuddha 26/10
0

Adicionando à resposta principal, se você estiver preso em

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

Lembre-se de que você precisa usar outra janela do terminal para inserir o seguinte comando.

$ sudo mysql --user=root mysql

Se você tentar fazê-lo na mesma janela, ele encerrará o processo de modo de segurança do mysqld.

Mohd Abdul Mujib
fonte
-1

Veja como configurar mysql-servercom um prompt de senha do terminal no Ubuntu 18.10.

  1. Faça o download do repositório MySQL APT via https://dev.mysql.com/downloads/repo/apt/
  2. cdno diretório em que você baixou e executou dpkg -i mysql-apt-config_0.8.13-1_all.deb(verifique o número da sua versão)
  3. No menu prompt, selecione a última opção "ok" e depois "ok" novamente.

  4. Atualize e instale o mysql-server e o mysql-client:

atualização do sudo apt
sudo apt instala mysql-server mysql-client
  1. Digite sua senha root no prompt.
  2. Selecione "Use Legacy Authentication Method" se suas estruturas / aplicativos em execução (como laravel) que ainda não suportam o novo "Strong Password Encryption", caso contrário, se sua estrutura / aplicativo suportar "Strong Password Encryption", selecione-a.
  3. Entre como root e verifique se funciona.
ThomasAFink
fonte