mysql não pede senha de root ao instalar

26

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:

The following additional packages will be installed:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server-5.7
  mysql-server-core-5.7
Suggested packages:
  mailx tinyca
The following NEW packages will be installed:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server mysql-server-5.7
  mysql-server-core-5.7
0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/17,9 MB of archives.
After this operation, 160 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Preconfiguring packages ...
Selecting previously unselected package libaio1:amd64.
(Reading database ... 227144 files and directories currently installed.)
Preparing to unpack .../libaio1_0.3.110-2_amd64.deb ...
Unpacking libaio1:amd64 (0.3.110-2) ...
Selecting previously unselected package mysql-client-core-5.7.
Preparing to unpack .../mysql-client-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
Unpacking mysql-client-core-5.7 (5.7.12-0ubuntu1) ...
Selecting previously unselected package mysql-client-5.7.
Preparing to unpack .../mysql-client-5.7_5.7.12-0ubuntu1_amd64.deb ...
Unpacking mysql-client-5.7 (5.7.12-0ubuntu1) ...
Selecting previously unselected package mysql-server-core-5.7.
Preparing to unpack .../mysql-server-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
Unpacking mysql-server-core-5.7 (5.7.12-0ubuntu1) ...
Selecting previously unselected package mysql-server-5.7.
Preparing to unpack .../mysql-server-5.7_5.7.12-0ubuntu1_amd64.deb ...
Unpacking mysql-server-5.7 (5.7.12-0ubuntu1) ...
Selecting previously unselected package mysql-server.
Preparing to unpack .../mysql-server_5.7.12-0ubuntu1_all.deb ...
Unpacking mysql-server (5.7.12-0ubuntu1) ...
Processing triggers for libc-bin (2.23-0ubuntu3) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for systemd (229-4ubuntu4) ...
Processing triggers for ureadahead (0.100.0-19) ...
Setting up libaio1:amd64 (0.3.110-2) ...
Setting up mysql-client-core-5.7 (5.7.12-0ubuntu1) ...
Setting up mysql-client-5.7 (5.7.12-0ubuntu1) ...
Setting up mysql-server-core-5.7 (5.7.12-0ubuntu1) ...
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.12, use --force if you still need to run mysql_upgrade
Setting up mysql-server (5.7.12-0ubuntu1) ...
Processing triggers for libc-bin (2.23-0ubuntu3) ...
    
por spqa 03.05.2016 / 16:04

4 respostas

32

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
14

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á:

  

NOTA: A EXECUÇÃO DE TODAS AS PARTES DESTE SCRIPT É RECOMENDADA PARA TODOS OS MariaDB         SERVIDORES EM USO DE PRODUÇÃO! POR FAVOR, LEIA CUIDADOSAMENTE CADA ETAPA!

     

Para entrar no MariaDB para protegê-lo, precisaremos do atual   senha para o usuário root. Se você acabou de instalar o MariaDB e você   ainda não definiu a senha root, a senha ficará em branco, então você   deve apenas pressionar enter aqui.

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

  

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

     

Definir a senha do root garante que ninguém possa entrar no MariaDB   usuário root 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 UBUNTU 18.04 OU mysql-server versão 5.7.22, ESTE MÉTODO NÃO FUNCIONARÁ

Para definir a senha de root no Ubuntu 18.04, Primeiro, siga os três primeiros comandos ou os dois primeiros passos de L.D. A resposta de James então corra,

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

A senha do usuário root está definida!

OU

Como não há senha definida para usuário root, basta fazer o login com a 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
8

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 9KSoft 15.09.2017 / 10:03