ERRO 1698 (28000): Acesso negado para usuário 'root'@'localhost'
I'estou a configurar um novo servidor e continuo a correr para este problema.
Quando tento entrar no banco de dados MySQL com o usuário root, eu recebo o erro:
ERROR 1698 (28000): Acesso negado para o utilizador 'root'@'localhost'
Não importa se eu me conecto através do terminal (SSH), através do PHPMyAdmin ou de um cliente MySQL, por exemplo o Navicat. Todos eles falham.
Eu olhei na tabela do mysql.user e consegui 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, a raiz deve ter acesso.
O Servidor é bastante simples, pois já há algum tempo que tento resolver este problema.
It's rodando Ubuntu 16.04.1 LTS com Apache, MySQL e PHP, para que ele possa hospedar websites, e iRedMail 0.9.5-1, para que ele possa hospedar emails.
O login na base de dados MySQL funciona bem antes de eu instalar o iRedMail. Eu também tentei, apenas instalando o iRedMail, mas depois root, também não funciona't...
Se alguém me pudesse dizer como corrijo o meu problema de login MySQL ou como instalo o iRedMail, em cima de uma instalação MySQL existente. E sim eu tentei o Dicas de Instalação e eu posso't encontrar essas variáveis nos arquivos de configuração.
Alguns sistemas como o Ubuntu, mysql está usando por padrão o UNIX auth_socket plugin.
Basicamente significa isso: db_users using it, will be "auth" by the system user credentias. You can see if your
root
user is set up like this by doing the following:Como você pode ver na consulta, o usuário
root
está utilizando o plugin `auth_socket'.Há duas maneiras de resolver isto:
mysql_native_password
.db_user
com vocêsystem_user
(recomendado)Opção 1: Opção 1:
Opção 2: (substitua YOUR_SYSTEM_USER pelo nome de usuário que você tem)
Lembre-se que se você utilizar a opção #2 you'terá que se conectar ao mysql como seu nome de usuário do sistema (
mysql -u YOUR_SYSTEM_USER
)Nota: Em alguns sistemas (por exemplo, Debian stretch) 'auth_socket' plugin é chamado 'unix_socket', então o comando SQL correspondente deve ser:
UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
Actualização: de @andy's comment seems that mysql 8.x.x.x updated/replaced the
auth_socket
forcaching_sha2_password
I don't have a system setup with mysql 8.x.x.x to test this, however the steps above should help you to understand the issue. Aqui's a resposta:Uma alteração a partir do MySQL 8.0.4 é que o novo plugin de autenticação padrão é 'caching_sha2_password'. O novo 'YOUR_SYSTEM_USER' terá este plugin auth e você pode fazer login a partir da shell bash agora com "mysql -u YOUR_SYSTEM_USER -p" e fornecer a senha para este usuário no prompt. Não é necessário o "UPDATE user SET plugin" passo. Para a atualização padrão do plugin auth 8.0.4 veja, https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/
Sugiro que se retire a ligação Mysql...
UPDATE-Esta é para a versão Mysql 5.5, se a sua versão for diferente, por favor mude a primeira linha de acordo
E Instale novamente Mas desta vez defina você mesmo uma senha de root. Isto vai poupar muito esforço.
Você quer acessar o MySQL com o usuário root mas você'não está fornecendo a senha correta do root's.
Se você precisa **setar uma nova senha para root***, o site MySQL's tem uma ótima documentação sobre como fazê-lo: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
I'll não mostrar o processo aqui porque a minha documentaçãoql no link acima sso's é claro e conciso.