web-dev-qa-db-fra.com

MariaDB - ne peut pas se connecter en tant que root

J'essaie de configurer MariaDB (10.0.29) sur Ubuntu (16.04.02). Après l'avoir installé et démarré le processus (Sudo service mysql start), Je ne peux pas me connecter en tant que root même si j'ai initialement défini le mot de passe sur vide.

C'est à dire mysql -u root me refusera l'accès. Je me suis connecté via Sudo mysql et vérifié la table utilisateur, c.-à-d. select user, password, authentication_string from mysql.user et comme prévu:

+---------+----------+-----------------------+ 
| User    | password | authentication_string |
+---------+----------+-----------------------+
| root    |          |                       |
+---------+----------+-----------------------+

J'ai également créé un nouvel utilisateur, à savoir. create user 'test'@'localhost' identified by ''; et quand j'essaye de faire mysql -u test (mot de passe vide), il fonctionne comme prévu et me connecte.

La table utilisateur ressemble à ceci:

+---------+----------+-----------------------+
| User    | password | authentication_string |
+---------+----------+-----------------------+
| root    |          |                       |
| test    |          |                       |
+---------+----------+-----------------------+

Alors, quelqu'un peut-il me dire pourquoi je ne peux pas me connecter en tant que root avec un mot de passe vide mais je peux me connecter en tant que test?

9
emihir0

Contrairement aux packages natifs MariaDB (ceux fournis par MariaDB lui-même), les packages générés par Ubuntu par défaut ont l'authentification nix_socket pour la racine locale. Pour vérifier, exécutez

SELECT user, Host, plugin FROM mysql.user;

Si tu vois unix_socket dans la colonne plugin, c'est la raison.

Pour revenir à l'authentification par mot de passe habituelle, exécutez

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

(choisissez la clause WHERE qui correspond à vos besoins, celle ci-dessus n'est qu'un exemple)

17
elenst

J'ai lutté avec ça pendant un certain temps. Mon Ubuntu est fourni avec MariaDB (10.0.31) par défaut. Après avoir réinstallé plusieurs fois et changé les plugins en diverses suggestions - je ne pouvais toujours pas me connecter correctement à mysql.

Au final, j'ai installé la dernière MariaDB (10.2.12) du repo: https://downloads.mariadb.org/mariadb/repositories/

J'ai pu me connecter correctement immédiatement.

1
Rockvole

Le problème que vous rencontrez est dû à des changements dans le système d'authentification de MariaDB 10.4:

À la suite des changements ci-dessus, le compte root tout-puissant ouvert à tous a finalement disparu. (...) car le compte root est créé automatiquement en toute sécurité. Ils sont créés comme: CREATE USER root @ localhost IDENTIFIED VIA unix_socket OR mysql_native_password USING 'invalid'

Si vous voulez vraiment accéder à votre base de données en tant que root, vous devez vous connecter via cli mariadb -p Et exécuter:

ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD("your-password-here");

Source: https://mariadb.com/kb/en/library/authentication-from-mariadb-104/#altering-the-user-account-to-revert-to-the-previous-authentication-method

À propos de l'autre solution ci-dessous : ils ne fonctionneront pas car MariaDB ne vous permettra pas non plus de mettre à jour la colonne plugin: ERROR 1348 (HY000): Column 'plugin' is not updatable.

0
TCB13