web-dev-qa-db-fra.com

MariaDB installé sans invite de mot de passe

J'ai installé mariadb à partir des référentiels Ubuntu 15.04 à l'aide du centre de logiciels Ubuntu ou à l'invite de commande (apt-get install maraidb-server), mais aucun mot de passe n'est demandé pour l'utilisateur root. Maintenant, je peux me connecter à mysql sur la ligne de commande sans mot de passe, mais la connexion à l'aide de Mysql-Workbench ou python mysqldb a échoué avec "Accès refusé pour l'utilisateur 'root' @ 'localhost'" message

20
mtoloo
Sudo mysql -u root

[mysql] use mysql;
[mysql] update user set plugin='' where User='root';
[mysql] flush privileges;
[mysql] \q
50
Aashish
Sudo mysql -u root

[mysql] use mysql;
[mysql] update user set plugin='' where User='root';
[mysql] flush privileges;
[mysql] \q

Cela doit être suivi de la commande suivante

# mysql_secure_installation
9
user1459342

il est courant que root ait un accès sans mot de passe si vous accédez à partir de localhost, je recommande de laisser ce paramètre seul.

Je vous recommande également de créer un utilisateur avec moins d'autorisations et de lui permettre de se connecter à distance.

create user my_admin identified by '12345';
create database my_database;
grant all on my_database.* to my_admin;

De cette façon, vous avez un peu plus de sécurité.

Si vous devez vous connecter en tant que root à partir d'un outil tel que Workbench, vous pouvez configurer ces outils pour créer un tunnel ssh et vous connecter à la base de données en tant qu'hôte local.

5
santiago arizti

Comme @Pedru l'a remarqué, le message "Accès refusé pour l'utilisateur 'root' @ 'localhost'" est dû au fait que Debian et Ubuntu activent le plug-in UNIX_SOCKET Authentication Plugin par défaut , permettant une connexion sans mot de passe (Voir aussi Plugin d'authentification - Socket Unix ). Ce n'est pas un problème d'installation.

Cela signifie que si vous tapez mysql -u root -p Dans le shell Linux, root est en fait la racine Linux (ou liée à celle-ci, je ne sais pas comment cela fonctionne réellement). Ainsi, si vous vous êtes connecté à Linux avec un autre compte, vous obtiendrez une erreur: ERROR 1698 (28000): Access denied for user 'root'@'localhost'. Mieux vaut taper Sudo mysql -u root -p Ou Sudo mysql -u root Si le mot de passe n'est pas encore défini.

2
Jean-Baptiste