Estou configurando um novo servidor e continuo enfrentando esse problema.
Quando tento fazer login no banco de dados MySQL com o usuário root, recebo o erro:
ERRO 1698 (28000): acesso negado para o usuário 'root' @ 'localhost'
Não importa se eu conectar através do terminal (SSH), através do PHPMyAdmin ou de um cliente MySQL, por exemplo, Navicat. Todos eles falham.
Procurei na tabela mysql.user e obtenha o seguinte:
+------------------+-------------------+
| user | host |
+------------------+-------------------+
| root | % |
| root | 127.0.0.1 |
| amavisd | localhost |
| debian-sys-maint | localhost |
| iredadmin | localhost |
| iredapd | localhost |
| mysql.sys | localhost |
| phpmyadmin | localhost |
| root | localhost |
| roundcube | localhost |
| vmail | localhost |
| vmailadmin | localhost |
| amavisd | test4.folkmann.it |
| iredadmin | test4.folkmann.it |
| iredapd | test4.folkmann.it |
| roundcube | test4.folkmann.it |
| vmail | test4.folkmann.it |
| vmailadmin | test4.folkmann.it |
+------------------+-------------------+
Como você pode ver, o root deve ter acesso.
O servidor é bastante simples, pois tentei solucionar isso por um tempo agora.
Ele está executando o Ubuntu 16.04.1 LTS com Apache, MySQL e PHP, para que ele possa hospedar sites, e o iRedMail 0.9.5-1, para que possa hospedar e-mails.
O login no banco de dados MySQL funciona bem antes de instalar o iRedMail. Eu também tentei, basta instalar o iRedMail, mas depois o root também não funciona ...
Se alguém puder me dizer como soluciono meu problema de login no MySQL ou como instalo o iRedMail, além de uma instalação existente do MySQL. E sim, eu tentei as dicas de instalação e não consigo encontrar essas variáveis nos arquivos de configuração.
sudo mysql_secure_installation
é a maneira mais fácil de consertar isso #Respostas:
Em alguns sistemas, como o Ubuntu, o mysql está usando por padrão o plugin auth_socket do UNIX .
Basicamente significa que: db_users using it, será "auth" pelas credenciais do usuário do sistema. Você pode ver se seu
root
usuário está configurado assim, fazendo o seguinte:Como você pode ver na consulta, o
root
usuário está usando oauth_socket
pluginExistem 2 maneiras de resolver isso:
mysql_native_password
plugindb_user
com vocêsystem_user
(recomendado)Opção 1:
Opção 2: (substitua YOUR_SYSTEM_USER pelo nome de usuário que você possui)
Lembre-se de que se você usar a opção 2, precisará se conectar ao mysql como o nome de usuário do seu sistema (
mysql -u YOUR_SYSTEM_USER
)Nota: Em alguns sistemas (por exemplo, Debian stretch), o plugin 'auth_socket' é chamado de 'unix_socket' , portanto, o comando SQL correspondente deve ser:
UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
Update: do comentário de @yy parece que o mysql 8.xx atualizou / substituiu o
auth_socket
paracaching_sha2_password
Eu não tenho uma configuração do sistema com o mysql 8.xx para testar isso, no entanto, as etapas acima devem ajudá-lo a entender o problema. Aqui está a resposta:Uma mudança no MySQL 8.0.4 é que o novo plug-in de autenticação padrão é 'caching_sha2_password'. O novo 'YOUR_SYSTEM_USER' terá esse plug-in de autenticação e você poderá fazer login no shell bash agora com "mysql -u YOUR_SYSTEM_USER -p" e fornecer a senha para esse usuário no prompt. Não há necessidade da etapa "UPDATE user SET plugin". Para a atualização do plug-in de autenticação padrão 8.0.4, consulte https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/
fonte
sudo gedit /etc/phpmyadmin/config.inc.php
. Depois, procureiAllowNoPassword
e descomentei as duas linhas que a continham. Então eu consegui entrar como root sem senha.IDENTIFIED BY ''
pouco provavelmente deve serIDENTIFIED BY 'YOUR_PASSWD'
mysqld_safe --skip-grant-tables
etc, e não está funcionando.sudo mysql -u root -p
não me deixar entrar?Verifique aqui:
NOVA versão do MYSQL faz desta maneira.
No novo my-sql, se a senha for deixada vazia durante a instalação, será baseada no
auth_socket
plug - in.A maneira correta é fazer login no my-sql com
sudo
privilégio.E, em seguida, atualize a senha usando:
Uma vez feito isso,
stop and start
o servidor mysql.Para detalhes completos, você pode consultar este link .
Comente por qualquer dúvida.
fonte
Eu estava tendo esse problema em uma VM Debian 8 com a qual estava interagindo através do Putty na área de trabalho do Windows 10.
Tentei as várias sugestões aqui, mas nada funcionou e estou executando o MariaDB no host Debian. No final, descobri que não podia iniciar o servidor db no modo de segurança, mas não precisava e os seguintes comandos realmente funcionaram para mim, ou seja, permitindo que um usuário MySql recém-criado efetue login no servidor MySql / MariaDB:
Se o acima não funcionar muito bem para você, siga as etapas descritas na postagem do zetacu acima ( zetacu ) e siga meus passos.
Agora você deve poder usar um cliente de terminal remoto e efetuar logon com segurança no mysql usando o comando:
* digite a senha quando solicitado
fonte
Eu sugeriria remover a conexão Mysql -
UPDATE - Isto é para o Mysql versão 5.5, se a sua versão for diferente, altere a primeira linha de acordo.
E instale novamente Mas desta vez, defina você mesmo uma senha root. Isso economizará muito esforço.
fonte
Depois de horas de luta sem solução aqui, isso funcionou para mim, então encontrei um vídeo do youtube onde diz que a coluna de senha agora é chamada authentication_string. Então eu pude mudar minha senha da seguinte maneira: Primeiro entre no mysql do terminal
então dentro do mysql digite o que for depois do mysql>
neste ponto você está fora do mysql de volta ao seu terminal normal. Você precisa reiniciar o mysql para que isso entre em vigor. para esse tipo, o seguinte:
Consulte este link de vídeo para entender melhor
fonte
passo 1.
sudo mysql -u root -p
passo 2.
USE mysql;
etapa 3.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';
Aqui 'admin' é sua nova senha, você pode alterá-la.
Passo 4.
exit
Obrigado. Você terminou.
fonte
Não há necessidade de sudo
O banco de dados é inicializado com 2 contas com todos os privilégios: a primeira é "raiz", inacessível e a segunda com o seu nome de usuário (verifique com o comando
whoami
).Para habilitar o acesso à conta root, você precisa fazer login com seu nome de usuário
e altere manualmente a senha para root
Faça login como 'root'
fonte
Primeiro passo: vá para /etc/phpmyadmin/config.inc.php e descomente as linhas nas quais você encontra AllowNoPassword. Segundo passo: faça login na sua conta padrão do mysql
e isso é tudo!
fonte
Isso funcionou para mim:
fonte
Eu também enfrentei o mesmo problema na primeira vez.
Agora está corrigido:
Primeiro, você copia o
/etc/mysql/mysql.conf.d/mysqld.cnf
arquivo e passa para/etc/mysql/my.cnf
.Você pode fazer isso por comando:
Agora vamos descansar a senha:
Use os seguintes comandos no seu terminal:
Agora você está dentro do console do mysql.
Então vamos escrever algumas consultas para redefinir nossa senha root
Agora podemos limpar
/etc/mysql/my.cng
Abra o arquivo acima no seu editor e remova as linhas inteiras dentro do arquivo.
Depois disso, vamos reiniciar o mysql:
Agora vamos usar o mysql com a senha recém-criada:
Por fim, digite sua senha recém-criada.
fonte
Encontrei minha solução após horas de pesquisa aqui.
Pare o MySQL
Crie o diretório de serviço do MySQL.
Dê ao usuário do MySQL permissão para gravar no diretório de serviço.
Inicie o MySQL manualmente, sem verificações de permissão ou rede.
Faça login sem uma senha.
Atualizar senha
Desative o MySQL.
Inicie o serviço MySQL normalmente.
fonte
Você deseja acessar o MySQL com o usuário root, mas não está fornecendo a senha correta do root.
Se você precisar definir uma nova senha para root , o site do MySQL possui uma ótima documentação sobre como fazê-lo: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
Vou não mostrar o processo aqui , porque a documentação MySql no link acima é clara e concisa .
fonte
os: Ubuntu18.04
mysql: 5.7
adicione
skip-grant-tables
ao final do arquivo mysqld.cnfcp o my.cnf
skip-grant-tables
do my.cnfvalidate_password
note que você deve saber que erro causado por quê? validate_password_policy?
você deve redefinir sua senha para preencher a política ou alterá-la.
fonte
Isso aconteceu comigo também. O problema está no repositório mysql que já vem com a distribuição Linux. Então, quando você simplesmente faz:
$ sudo apt install mysql-server
ele instala o mysql a partir de seu repositório padrão, o que gera esse problema. Então, para superar isso, você precisa desinstalar o mysql instalado$ sudo apt remove mysql* --purge --auto-remove
Então baixe o mysql repo no site oficial do mysql MySQL APT Repo Siga a documentação deles sobre como adicionar o repo e instalá-lo. Isso não dá problema. Também como respondido por @zetacu, você pode verificar se o mysql root agora realmente usa o plugin mysql_native_password
fonte
No meu caso,
Tenho certeza de que minha senha estava correta, caso contrário, o código de erro seria
ERROR 1045 (28000): Access denied for user
então eu me conecto usando o sudo,
desta vez funcionou para mim. veja os documentos
e depois altere a senha root,
depois reinicie o servidor usando
sudo /etc/init.d/mysql restart
fonte