Eu resolvi o problema seguindo a resposta deste post:
Não é possível redefinir a senha de root do MySQL (MariaDB)
É necessário alterar o campo de plug-in do mysql.user para todas as raízes para uma string em branco.
Estou trabalhando no Xubuntu 15.04. Eu já instalei o MariaDB-Server em vários sistemas e sempre pedi uma senha root durante a instalação. Desta vez, no entanto, não me lembro de ter sido solicitada a senha. Quando tento efetuar o login sem uma senha (ou uma senha em branco), recebo o erro Access denied for user 'root'@'localhost'
.
Eu tentei desinstalar o pacote completamente por
sudo apt-get remove mariadb-server
sudo apt-get purge mariadb-server
Quando eu reinstalei, ainda não fui perguntado pela senha de root.
Eu tentei a abordagem mysqld --skip-grant-tables
de
mysql como corrigir o acesso negado para o usuário 'root' @ 'localhost '.
Eu posso modificar a senha para o usuário root no banco de dados mysql - pelo menos o valor do hash muda - mas eu ainda não consigo logar com a nova senha após uma reinicialização do servidor mysql. Eu ainda recebo o mesmo erro.
O usuário debian-sys-maint não existe. Então, não posso usá-lo para consertar nada.
Alguma idéia do que mais eu poderia experimentar?
Eu resolvi o problema seguindo a resposta deste post:
Não é possível redefinir a senha de root do MySQL (MariaDB)
É necessário alterar o campo de plug-in do mysql.user para todas as raízes para uma string em branco.
Você precisa redefinir a senha. então para isso
sudo mysql -u root
use mysql;
update user set plugin='' where User='root';
flush privileges;
exit;
A idéia com a nova configuração é que você não deveria estar usando senhas. Veja Plugin de Autenticação UNIX_SOCKET para detalhes.
O que é especialmente relevante é o conteúdo do /usr/share/doc/mariadb-server-10.0/README.Debian.gz no Ubuntu 16.04:
On new installs no root password is set and no debian-sys-maint user is created anymore. Instead the MariaDB root account is set to be authenticated using the unix socket, e.g. any mysqld invocation by root or via sudo will let the user see the mysqld prompt.
You may never ever delete the mysql user "root". Although it has no password is set, the unix_auth plugin ensure that it can only be run locally as the root user.
The credentials in /etc/mysql/debian.cnf specify the user which is used by the init scripts to stop the server and perform logrotation. This used to be the debian-sys-maint user which is no longer used as root can run directly.
Portanto, se você desabilitar esse plug-in para o root e definir uma senha, a tarefa cron diária será interrompida, pois está assumindo que fará login como root sem uma senha, mas com o plug-in.
Mais tarde, diz:
Scripts should run as a user have have the required grants and be identified via unix_socket.
Portanto, parece que as senhas não devem mais ser usadas pelos aplicativos.
Eu fiz isso executando este comando, logo após a instalação:
$ sudo mysql_secure_installation
No primeiro passo, a senha está em branco, basta pressionar Enter.
Eu tive o mesmo problema em um pi raapberry com trecho. Minha solução foi criar um novo usuário com todos os privilégios, fazendo o seguinte:
sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
MariaDB [(none)]> use mysql
MariaDB [mysql]> FLUSH PRIVILEGES;
GRANT ALL privileges ON mysql.* TO 'admin'@'localhost' with grant option;
Agora posso fazer o login e usar o usuário "admin" como superusuário.
Espero que isso ajude alguém.
Use apenas sudo mysql -u root
- é isso
Detalhes: Versões mais recentes autenticam no mysql usando a autenticação do sistema. Então, se você pode sudo para o sistema operacional, assume-se que você é root db também. Você pode confirmar isso emitindo sudo mysql -u root -e "USE mysql; SELECT User, Host, plugin FROM mysql.user;"
. Você deve ver algo assim (talvez com auth_socket
em outras distros)
+------+-----------+-------------+
| User | Host | plugin |
+------+-----------+-------------+
| root | localhost | unix_socket |
+------+-----------+-------------+
Use apenas sudo mysql -u root
e você estará em.
Detalhes: Versões mais recentes autenticam no mysql usando a autenticação do sistema. Então, se você pode sudo para o sistema operacional, assume-se que você é root db também. Você pode confirmar isso emitindo sudo mysql -u root -e "USE mysql; SELECT User, Host, plugin FROM mysql.user;"
. Você deve ver algo assim (talvez com auth_socket
em outras distros)
+------+-----------+-------------+
| User | Host | plugin |
+------+-----------+-------------+
| root | localhost | unix_socket |
+------+-----------+-------------+