Changer le mot de passe root MySQL sur Ubuntu 16.04

Cet article vous décrit la procédure pour changer le mot de passe root MySQL sur Ubuntu 16.04.

Lorsque vous installez MySQL sur Ubuntu (16.04), l’installation vous demande de fixer un mot de passe pour le compte root MySQL. Il peut arriver que si vous générez un mot de passe aléatoire que certains caractères ne passent pas bien dans la boite de dialogue prévue à cet effet. Vous vous retrouvez alors dans l’impossibilité de vous connecter en root sur votre nouvelle installation.

Désactiver l’authentification MySQL

Pour changer le mot de passe root MySQL, il faut d’abord désactiver l’authentification MySQL afin de pouvoir se connecter.

Cette opération est possible grâce à l’option skip-grant-tables

Editez le fichier /etc/mysql/mysql.conf.d/mysqld.cnf et ajoutez cette option dans la section [mysqld]

[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
skip-grant-tables

Redémarrer mysql :

$ /etc/init.d/mysql restart

Changer le mot de passe root MySQL

Vous pouvez maintenant vous connecter sans mot de passe. Exécutez la console mysql en ligne de commande pour changer le mot de passe comme suit :

$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.16-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2016, 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.

mysql> use mysql;

mysql> UPDATE user SET authentication_string = PASSWORD('password'), password_expired = 'N' WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

Réactivez l’authentification MySQL

Editez le fichier /etc/mysql/mysql.conf.d/mysqld.cnf et enlevez l’option skip-grant-tables.

Redémarrez mysql, l’authentification et votre mot de passe root MySQL sont à jour

$ /etc/init.d/mysql restart