web-dev-qa-db-fra.com

Mysql fonctionne avec Sudo, mais sans rien. (Ubuntu 16.04, MySQL 5.7.12-0ubuntu1.1)

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:

https://askubuntu.com/questions/766334/cant-login-as-mysql-user-root-from-normal-user-account-in-ubuntu-16-04

14
Daniel

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.

3
Simon Woolf

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;
6
Loren

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)
1
Sams

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]
0
Sree