Definindo a senha root na nova instalação do mysql 5.7

11

Estou tentando instalar o mysql em uma porção tendo CentOS Linux release 7.2.1511. Dê uma olhada na instalação do processo:

# sudo yum install mysql-server

Resultado:

Dependencies Resolved

===========================================================================================================================================================================================================
 Package                                                 Arch                                    Version                                         Repository                                           Size
===========================================================================================================================================================================================================
Removing:
 mysql-community-client                                  x86_64                                  5.7.10-1.el7                                    @mysql57-community                                  109 M
 mysql-community-server                                  x86_64                                  5.7.10-1.el7                                    @mysql57-community                                  652 M

Transaction Summary
===========================================================================================================================================================================================================

Eu executei o mysql damon:

# sudo service mysqld start

Verificando o serviço:

# ps -ef|grep mysql
mysql     1371     1  0 22:17 ?        00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

Aí vem o problema me deixando louco. Quero definir a senha root pela primeira vez, então fiz:

# sudo mysql_secure_installation
// when password is required, I just type "enter key"

Mas a saída: Protegendo a implantação do servidor MySQL.

Digite a senha para a raiz do usuário: Erro: acesso negado para o usuário 'root' @ 'localhost' (usando a senha: NO)

Pesquisando o erro, em 90% dos casos, a solução é chamar o mysqld_safe --skip-grant-tables &comando:

service mysqld stop
mysqld_safe --skip-grant-tables &
mysql --user=root mysql
update user set Password=PASSWORD('new-password') where user='root';
flush privileges;
exit;

Mas mysqld_safesolicita um erro "comando não encontrado". Eu também testei com sudo mysqld --skip-grant-tables &, mas não faz nada. Agradeço se você me orientar na direção certa para definir a senha do root. Agradeço antecipadamente.

manix
fonte
Precisa que os binários estejam no PATH. Ou você precisa de caminhos completos. (Esta é mais uma questão de Linux do que uma questão MySQL.)
Rick James

Respostas:

18

Se você acabou de executar o comando mysql no usuário root, receberá acesso sem a senha solicitada, porque a autenticação de soquete está ativada para root @ localhost.

Este guia é enganoso.

A única maneira de definir a senha é alternar para autenticação nativa, como:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
Vadim Smilansky
fonte
Você é o salvador! Trabalhe como charme!
Zugor 8/01
9

Na minha pesquisa insana para uma solução, dei uma olhada /var/log/mysqld.loge encontrei esta linha:

[Nota] Uma senha temporária é gerada para root @ localhost: abc123

Parece que o mysql 5.7+ gera uma senha aleatória na instalação e solicitada nesse arquivo.

manix
fonte
7

Siga as etapas abaixo para redefinir a senha:

$ sudo systemctl start mysqld

Redefina a senha raiz do servidor MySQL.

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

Saída algo como:

10.744785Z 1 [Note] A temporary password is generated for root@localhost: o!5y,oJGALQa

Use a senha acima durante o processo de redefinição do mysql_secure_installation .

$ sudo mysql_secure_installation
Securing the MySQL server deployment.

Enter password for user root: 

Você redefiniu com êxito a senha root do servidor MySQL. Use o comando abaixo para verificar se o servidor MySQL está conectado ou não.

$ mysql -u root -p

Veja meu artigo: Instale o MySQL 5.7 mais recente no RHEL / Centos 7

Arvind
fonte
3

Todas as opções acima não funcionaram para mim e observe que passei uma hora ou mais tentando todas as outras sugestões do site MYSql para tudo sobre o SO, finalmente consegui trabalhar com:

Nota: enquanto mostrava Digite a senha para o usuário root, eu não tinha a senha original, então apenas digitei a mesma senha para ser usada como a nova senha.

Nota: não havia /var/log/mysqld.log apenas /var/log/mysql/error.log

  1. matar o atual mysqld pid
  2. execute o mysqld com o sudo / usr / sbin / mysqld e
  3. execute / usr / bin / mysql_secure_installation

    Saída de mysql_secure_installation

    root @ myServer: ~ # / usr / bin / mysql_secure_installation

    Protegendo a implantação do servidor MySQL.

    Digite a senha para a raiz do usuário:

    O VALIDAR SENHA PLUGIN pode ser usado para testar senhas e melhorar a segurança. Ele verifica a força da senha e permite que os usuários definam apenas as senhas que são suficientemente seguras. Deseja configurar o plugin VALIDATE PASSWORD?

    Pressione y | Y para Sim, qualquer outra tecla para Não: não Usando a senha existente para root. Alterar a senha para root? ((Pressione y | Y para Sim, qualquer outra tecla para Não): y

    Nova senha:

    Redigite a nova senha: Por padrão, uma instalação do MySQL tem um usuário anônimo, permitindo que qualquer pessoa faça login no MySQL sem precisar ter uma conta de usuário criada para eles. Isso é destinado apenas para testes e para tornar a instalação um pouco mais suave. Você deve removê-los antes de passar para um ambiente de produção.

    Remover usuários anônimos? (Pressione y | Y para Sim, qualquer outra tecla para Não): y Sucesso.

    Normalmente, o root deve ter permissão apenas para se conectar a partir de 'localhost'. Isso garante que alguém não consiga adivinhar a senha raiz da rede.

    Proibir o login root remotamente? (Pressione y | Y para Sim, qualquer outra tecla para Não): y Sucesso.

    Por padrão, o MySQL vem com um banco de dados chamado 'teste' que qualquer pessoa pode acessar. Isso também se destina apenas a testes e deve ser removido antes de passar para um ambiente de produção.

    Remover banco de dados de teste e acessar a ele? (Pressione y | Y para Sim, qualquer outra tecla para Não): y

    • Soltando banco de dados de teste ... Sucesso.

    • Removendo privilégios no banco de dados de teste ... Sucesso.

    Recarregar as tabelas de privilégios garantirá que todas as alterações feitas até agora entrem em vigor imediatamente.

    Recarregar tabelas de privilégios agora? (Pressione y | Y para Sim, qualquer outra tecla para Não): y Sucesso.

    Tudo feito!

JGlass
fonte