Problema com a senha do mysql root

1

Estou no Ubuntu 16.04 LTS. Qual é a minha senha root do mysql? Se eu entrar

mysql -u root -p

Ele me pede para digitar uma senha: não sei, e nenhuma senha também não funciona. O mysql foi pré-instalado, então eu não escolhi nenhuma senha de root. Se eu tentar instalá-lo novamente, com

sudo apt-get install mysql-server

Ele diz que o mysql-server já é a versão mais recente (5.7.18-0ubuntu0.16.04.1)

Qualquer ajuda, dicas? Obrigado.

    
por A. N. Other 01.07.2017 / 16:05

4 respostas

0

Duas opções:

Primeiro é limpar o mysql (somente se você ainda não tiver um banco de dados):

Use

apt-get purge mysql-server

para eliminar e, em seguida,

apt-get install mysql-server

para simplesmente reinstalá-lo. Ao instalá-lo, você deve pedir uma senha. Esta é a maneira mais fácil e rápida, porém pode ocorrer problemas se alguns programas como o phpmyadmin já estiverem conectados ao MySQL existente, então eu sugiro que você use o

Ou faça o seguinte: Pare o servidor MySQL usando

sudo service mysql stop 

Em seguida, inicie o modo de segurança com

sudo /usr/bin/mysqld_safe --skip-grant-tables & 

Selecione localhost como host (Após o último comando, não haverá um prompt de comando, portanto, após a mensagem Starting mysqld daemon with databases from [...] type no próximo comando)

mysql -h localhost

selecione o mysql com

USE mysql 

(Substitua YOURNEWPASSWORD pela sua nova senha!) Digite

UPDATE mysql.user 
SET authentication_string=PASSWORD('new_password') 

WHERE usuário = 'root' E host = 'localhost';

Saia com

quit 

E reinicie o MySQL com

sudo mysqladmin shutdown 
sudo service mysql start

Editar

Esse erro tem algo a ver com o seu soquete MySQL. Primeiro você quer encontrar todos os arquivos de socket em seu sistema com:

sudo find / -type s

Seu soquete deve ser algo semelhante a este

/var/lib/mysql/mysql.sock

(importante é a parte /mysql.sock )

Quando você encontrar o local onde o soquete está sendo aberto, adicione ou edite a linha ao seu

/etc/my.cnf 

arquivo com o caminho para o arquivo de soquete:

colocar

[mysqld]

no começo e

socket=/path/to/your/socket/

no final do arquivo.

Experimente novamente a opção 2. agora. Se não funcionar, continue com esta explicação.

Se isto não resolver o seu problema, algo substitui a localização my.cnf, e isso resultaria em um socket não encontrado onde o arquivo my.cnf indica que deveria ser. Então, quando você tentar executar o cliente de linha de comando mysql, ele lerá my.cnf para localizar o soquete, mas ele não o encontrará, já que ele se desvia de onde o servidor criou um. Então, a menos que você se importe onde o soquete reside, basta alterar o my.cnf para corresponder.

Para corrigir isso, inicie com o encerramento do mysqld process

pkill -9 mysqld

Depois de fazer isso, você pode querer procurar por um arquivo pid em / var / run / mysqld / e deletá-lo

Certifique-se de que as permissões no seu socket sejam tais que qualquer usuário que esteja executando o mysqld possa ler / gravar nele. Um teste fácil é abri-lo para ler / escrever e ver se ainda funciona:

chmod 755 /var/run/mysqld/mysqld.sock

Fontes:

link

link

link

    
por ADDB 01.07.2017 / 19:19
2

Para o novo my-sql 5.7, se a senha for deixada vazia, ele usará auth_plugin.

Nesse caso, faça o login com sudo privilege.

$ sudo mysql -u root -p

Após o login, você pode simplesmente usar isso para atualizar a senha.

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

Para uma verificação completa, aqui .

EDITAR : Também é possível usar isso (sem -u root ):

$ sudo mysql
$ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';
    
por Nandesh 15.08.2018 / 17:51
1

Para o MySQL 5.7, a senha padrão é impressa nos logs. Um grep rápido pode devolvê-lo.

grep 'temporary password' /var/log/mysqld.log

Referências: link

link

link

link

    
por Bujiraso 01.07.2017 / 16:30
0

UBUNTU 16.04 e MYSQL 5.7.20

Eu não achei as instruções do ADDB completamente úteis. Depois de pesquisar, descobri o seguinte (uma pequena reescrita para a Opção 2):

sudo /etc/init.d/mysql stop
    sudo mkdir /var/run/mysqld/
    sudo chown mysql /var/run/mysqld/
    sudo mysqld_safe --skip-grant-tables &
    mysql -uroot
    use mysql;
    update user set authentication_string=PASSWORD("NEW_PASSWORD_GOES_HERE") where User='root';
    flush privileges;
    quit;
    sudo /etc/init.d/mysql stop
    sudo /etc/init.d/mysql start    

Referência: link

Meu método preferido:

Eu usei o usuário Mysql "debian-sys-maint" (um root equivelant). A senha pode ser encontrada em /etc/mysql/debian.cnf. Após o login no Mysql, este usuário altera a senha para qualquer usuário do Mysql.

USE mysql
SELECT root@localhost;
ALTER USER user IDENTIFIED BY 'auth_string';
ALTER USER 'Name_of_user_to_be_modified'@'Hostname (ie:localhost)' IDENTIFIED BY 'NEW_PASSWORD';
flush privileges;
exit;

Referência: link

    
por arthurjohnston 12.11.2017 / 18:02