J'ai Ubuntu 16.04
et Mysql 5.7.12-0ubuntu1.1
. Quand je tape:
Sudo mysql -u root
Je peux me connecter à la console mysql, mais quand je le tape sans Sudo
:
mysql -u root
J'obtiens une erreur:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Mon problème est survenu lorsque j'ai installé et supprimé MariaDB
. Je me souviens que dans PostgreSQL
, il est important de savoir quel utilisateur unix se connecte à la base de données, mais comment gérer cela dans Mysql
?
J'ai résolu ce problème en suivant:
La solution consiste à fournir un mot de passe pour le compte racine mysql (si vous ne l'avez pas déjà fait). Le message d'erreur que vous recevez est parce qu'un mot de passe est requis et que vous ne l'avez pas fourni. Réinitialiser le mot de passe root avec:
$ mysqladmin -u root password
$ New password:
ou si vous aviez déjà défini un mot de passe root (ce dont je doute, sinon vous ne pourriez pas vous connecter via Sudo), alors ce serait
$ mysqladmin -u root -p password
Les utilisateurs de Mysql ne sont pas liés aux utilisateurs d’Unix, contrairement à postgres.
Ce problème semble être principalement causé par le plugin auth_socket
qui est maintenant utilisé par défaut si l'utilisateur root n'a pas de mot de passe. (Auparavant, le processus d'installation d'apt-get demandait un mot de passe pour root, mais il ne semble plus le faire, donc auth_socket
est activé.)
Pour l'une ou l'autre requête, connectez-vous d'abord en tant que root à l'aide de Sudo mysql
Pour MySQL ou MariaDB> = 10.2:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
Pour les autres utilisateurs de MariaDB <10.2 (qui ne supporte pas ALTER USER
), vous devrez exécuter cette requête:
SET PASSWORD = PASSWORD('test');
update mysql.user set plugin = 'mysql_native_password' where User='root';
FLUSH PRIVILEGES;
Version du serveur: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)
Étape 1:
server@Server:~$ Sudo -i
Étape 2:
root@Server:~# mysql
La sortie ressemble à ceci:
server@Server:~$ Sudo -i
[Sudo] password for server:
root@Server:~# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Étape 3:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Abc123123@';
Sortie:
Query OK, 0 rows affected (0.00 sec)
S'il vous plaît essayez la commande ci-dessous:
mysql -uroot -p[password]
[mot de passe] - tapez le mot de passe que vous avez défini lors de l'installation de mysql.
Vous pouvez aussi essayer:
Sudo mysql -uroot -p[password]