2017-04-16 3 views
4

J'ai installé MariaDB sur Ubuntu LTS 16.04. Ensuite, j'ai exécutéMariaDB Attention: 'root @ localhost' a les deux ... Le mot de passe sera ignoré

/usr/bin/mysql_secure_installation 

et de définir un mot de passe root. L'accès à la base de données via mysql -u root -p fonctionne correctement. Mais en vérifiant l'état service mysql status ouvre un fichier journal avec cet avertissement:

[Warning] 'user' entry '[email protected]' has both a password and an authentication plugin specified. The password will be ignored. 

Les questions sont les suivantes:

  1. Est-ce un souci ou tout à fait normal?
  2. Si c'est un souci, comment puis-je le réparer?

Répondre

9

Il est normal que, si en disant « accéder à la DB via mysql -u root -p fonctionne très bien »-vous dire que vous exécutez tout en étant une racine du système (ou sous sudo). Vous ne devriez pas pouvoir le faire en tant qu'utilisateur ordinaire.

Les paquets générés par Ubuntu par défaut ont l'authentification unix_socket pour la racine locale. Pour vérifier, exécutez

SELECT user, host, plugin FROM mysql.user; 

Vous devriez voir unix_socket dans la colonne plugin pour [email protected].

Si vous souhaitez utiliser le lieu d'authentification par mot de passe, exécutez

UPDATE mysql.user SET plugin = '' WHERE plugin = 'unix_socket'; 
FLUSH PRIVILEGES; 
+0

Merci beaucoup pour votre réponse détaillée (un désolé de ne pas pouvoir upvote votre réponse)! Cela s'est débarrassé de l'avertissement. Cependant, je vois maintenant ERROR 1045 (28000): Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: NO) 'dans le journal d'état après le redémarrage de MariaDB après un redémarrage du serveur. De plus, redémarrer MariaDB via 'service mysql restart' ne fonctionne plus?!? – FlorianL

+0

Ubuntu doit avoir changé d'autres scripts en conséquence. L'ancienne façon de démarrer et de surveiller le service était d'avoir un utilisateur spécial 'debian-sys-maint' avec son propre' debian.conf' qui contenait un mot de passe généré. À mon avis, l'une des raisons pour commencer à utiliser 'unix_socket' était de se débarrasser de cet héritage plutôt bizarre. Si vous voulez continuer à utiliser les scripts, mon conseil habituel est de garder 'root @ localhost' comme Ubuntu le veut (avec' unix_socket'), et en plus créer un autre super utilisateur que vous devrez configurer avec un mot de passe d'authentification et utiliser pour votre fins. – elenst