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
Sudo mysql -u root
[mysql] use mysql;
[mysql] update user set plugin='' where User='root';
[mysql] flush privileges;
[mysql] \q
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
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.
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.