Comment configurer l’authentification par mot de passe avec Apache

Étape 1 – Installez le paquet d’utilitaires Apache

Commençons par mettre à jour notre serveur et installer un paquet dont nous aurons besoin. Dans le cadre de ce tutoriel, nous utiliserons un utilitaire appelé htpasswd, qui fait partie du paquet apache2-utils, afin de créer le fichier et gérer le nom d’utilisateur et les mots de passe nécessaires pour accéder au contenu restreint.

sudo apt update
sudo apt install apache2-utils

 Copy

Ceci étant installé, nous avons maintenant accès à la commande htpasswd.

Étape 2 – Créez le fichier de mots de passe

La commande htpasswd nous permettra de créer un fichier de mots de passe qu’Apache pourra utiliser pour authentifier les utilisateurs. Nous allons créer un fichier caché à cet effet, appelé .htpasswd, dans notre répertoire de configuration /etc/apache2.

La première fois que nous utilisons cet utilitaire, nous devons ajouter l’option -c pour créer le fichier de mots de passe spécifié. Nous spécifions un nom d’utilisateur (sammy dans cet exemple) à la fin de la commande pour créer une nouvelle entrée dans le fichier :

sudo htpasswd -c /etc/apache2/.htpasswd sammy

 Copy

Il vous sera demandé de fournir et de confirmer un mot de passe pour l’utilisateur.

Laissez de côté l’argument -c pour tout utilisateur supplémentaire que vous souhaitez ajouter afin de ne pas écraser les données du fichier :

sudo htpasswd /etc/apache2/.htpasswd another_user

 Copy

Si l’on consulte le contenu du dossier, on peut voir le nom d’utilisateur et le mot de passe crypté de chaque enregistrement :

cat /etc/apache2/.htpasswd

 Copy

Outputsammy:$apr1$.0CAabqX$rb8lueIORA/p8UzGPYtGs/
another_user:$apr1$fqH7UG8a$SrUxurp/Atfq6j7GL/VEC1

Nous avons maintenant nos utilisateurs et nos mots de passe dans un format qu’Apache peut lire.

Étape 3 – Configurez l’authentification par mot de passe Apache

Dans cette étape, nous devons configurer Apache pour qu’il vérifie ce fichier avant de servir notre contenu protégé. Nous pouvons le faire de deux manières : soit directement dans le fichier d’hôte virtuel d’un site, soit en plaçant des fichiers .htaccess dans les répertoires qui doivent faire l’objet d’une restriction d’accès. Il est généralement préférable d’utiliser le fichier d’hôte virtuel, mais si vous devez permettre à des utilisateurs non root de gérer leurs propres restrictions d’accès, vérifier les restrictions dans le contrôle de version à côté du site web, ou si vous avez déjà une application web utilisant des fichiers .htaccess à d’autres fins, envisagez la deuxième option.

Choisissez l’option qui répond le mieux à vos besoins.

Option 1 : Configuration du contrôle d’accès dans la définition de l’hôte virtuel (recommandé)

La première option consiste à modifier la configuration d’Apache et à ajouter la protection par mot de passe au fichier de l’hôte virtuel. Cela donne généralement de meilleures performances car cela évite les dépenses liées à la lecture des fichiers de configuration distribués. Cette option nécessite un accès à la configuration, qui n’est pas toujours disponible, mais lorsque vous y avez accès, elle est recommandée.

Commencez par ouvrir le fichier d’hôte virtuel auquel vous souhaitez ajouter une restriction d’accès. Pour notre exemple, nous utiliserons le fichier default-ssl.conf qui contient l’hôte virtuel par défaut installé par le biais du paquet Apache d’Ubuntu. Ouvrez le fichier avec un éditeur de texte en ligne de commande tel que nano :

sudo nano /etc/apache2/sites-enabled/default-ssl.conf

 Copy

À l’intérieur, les commentaires étant dépouillés, le dossier devrait ressembler à celui-ci :/etc/apache2/sites-enabled/default-ssl.conf

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  DocumentRoot /var/www/html
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

 Copy

L’authentification se fait par répertoire. Pour mettre en place l’authentification, vous devrez cibler le répertoire dont vous souhaitez restreindre l’accès avec un bloc <Directory ___>. Dans notre exemple, nous allons restreindre la racine (ou root) entière du document, mais vous pouvez modifier cette liste pour ne cibler qu’un répertoire spécifique dans l’espace web :/etc/apache2/sites-enabled/default-ssl.conf

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  DocumentRoot /var/www/html
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

  <Directory "/var/www/html">
  </Directory>
</VirtualHost>

 Copy

Dans ce bloc répertoire, précisez que nous mettons en place l’authentification de base. Pour l'AuthName, choisissez un nom de domaine qui sera affiché à l’utilisateur lors de la demande des identifiants. Utilisez la directive AuthUserFile pour faire pointer Apache vers le fichier de mots de passe que nous avons créé. Enfin, exigez que seul un utilisateur valide puisse accéder à cette ressource, ce qui signifie que toute personne pouvant vérifier son identité à l’aide d’un mot de passe sera autorisée à entrer :/etc/apache2/sites-enabled/default-ssl.conf

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  DocumentRoot /var/www/html
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

  <Directory "/var/www/html">
      AuthType Basic
      AuthName "Restricted Content"
      AuthUserFile /etc/apache2/.htpasswd
      Require valid-user
  </Directory>
</VirtualHost>

 Copy

Enregistrez et fermez le fichier lorsque vous avez terminé. Si vous utilisez nano, vous pouvez le faire en appuyant sur CTRL+X suivi de Y puis ENTER.

Avant de redémarrer le serveur web, vous pouvez vérifier la configuration à l’aide de la commande suivante :

sudo apache2ctl configtest

 Copy

Si tout se passe bien et que vous obtenez Syntax OK en sortie, vous pouvez redémarrer le serveur pour mettre en œuvre votre politique de mots de passe. Comme systemctl n’affiche pas le résultat de toutes les commandes de gestion des services, nous utiliserons le status pour nous assurer que le serveur fonctionne :

sudo systemctl restart apache2
sudo systemctl status apache2

 Copy

Maintenant, le répertoire que vous avez spécifié doit être protégé par un mot de passe.

Option 2 : Configuration du contrôle d’accès avec des fichiers .htaccess

Apache peut utiliser des fichiers .htaccess afin de permettre à certains éléments de configuration d’être définis dans un répertoire de contenu. Étant donné qu’Apache doit relire ces fichiers à chaque requête impliquant le répertoire, ce qui peut avoir un impact négatif sur les performances, l’option 1 est préférable ; mais si vous utilisez déjà le fichier .htaccess ou si vous devez autoriser des utilisateurs non root à gérer les restrictions, les fichiers .htaccess sont intéressants.

Pour activer la protection par mot de passe à l’aide de fichiers .htaccess, ouvrez le fichier de configuration principal d’Apache avec un éditeur de texte en ligne de commande tel que nano :

sudo nano /etc/apache2/apache2.conf

 Copy

Trouvez le bloc <Directory> pour le répertoire /var/www qui contient la racine (ou root) du document. Activez le traitement .htaccess en faisant passer la directive AllowOverride dans ce bloc de None à All :/etc/apache2/apache2.conf

. . .

<Directory /var/www/>
  Options Indexes FollowSymLinks
  AllowOverride All
  Require all granted
</Directory>

. . .

 Copy

Enregistrez et fermez le fichier lorsque vous avez terminé. Si vous utilisez nano, vous pouvez le faire en appuyant sur CTRL+X suivi de Y puis ENTER.

Ensuite, nous devons ajouter un .htaccess au répertoire dont nous souhaitons restreindre l’accès. Dans notre démonstration, nous allons restreindre l’ensemble de la racine (ou root) du document (tout le site web) qui se trouve dans /var/www/html, mais vous pouvez placer ce fichier dans n’importe quel répertoire pour lequel vous souhaitez restreindre l’accès :

sudo nano /var/www/html/.htaccess

 Copy

Dans ce fichier, précisez que nous souhaitons mettre en place une authentification de base. Pour l'AuthName, choisissez un nom de domaine qui sera affiché à l’utilisateur lors de la demande des identifiants. Utilisez la directive AuthUserFile pour faire pointer Apache vers le fichier de mots de passe que nous avons créé. Enfin, nous aurons besoin d’un utilisateur valide pour accéder à cette ressource, ce qui signifie que toute personne pouvant vérifier son identité avec un mot de passe sera autorisée à entrer :/var/www/html/.htaccess

AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

 Copy

Enregistrez et fermez le fichier. Redémarrez le serveur web pour protéger par mot de passe tout le contenu situé dans le répertoire ou en dessous avec le fichier .htaccess et utilisez systemctl status pour vérifier le succès du redémarrage :

sudo systemctl restart apache2
sudo systemctl status apache2

 Copy

Maintenant, le répertoire que vous avez spécifié doit être protégé par un mot de passe.

Installer et configurer un certificat Let’s Encrypt

Let’s Encrypt propose un client pour la mise en place et le renouvellement des certifications mais celui-ci doit avoir les droits root sur le serveur et il modifie la configuration du serveur web automatiquement.

Il existe beaucoup d’alternatives, celle que nous allons utiliser est un script shell nommé dehydrated.

Cet article est une traduction adaptée de Simple Let’s Encrypt on Debian/Apache publié par Andreas Gohr, merci à lui pour l’article original.

Pré-requis Apache 

Activer le mod ssl :

a2enmod sslservice apache2 restart

Télécharger – Copier dans le presse-papier

Si on souhaite utiliser https sur plusieurs domaines hébergés par la machine, ne pas oublier d’ajouter la ligne NameVirtualHost *:443 dans /etc/apache2/ports.conf.

Installer et configurer dehydrated 

Récupérez les sources de l’outil pour l’installer dans /etc/ :

cd /etc/git clone https://github.com/lukas2511/dehydrated letsencryptcd letsencrypt

Télécharger – Copier dans le presse-papier

Créez un répertoire .acme-challenges qui permettra à l’émetteur du certificat de vérifier que les domaines à traiter vous appartiennent bien (ce répertoire doit donc être accessible à Apache).

mkdir .acme-challengesecho 'it works' > .acme-challenges/test.txtchown -R www-data:www-data .acme-challenges

Télécharger – Copier dans le presse-papier

Créez un alias pour que le répertoire .acme-challenges soit accessible pour chacun des domaines à traiter.

Apache 2.2

# /etc/apache2/conf.d/letsencryptAlias /.well-known/acme-challenge /etc/letsencrypt/.acme-challenges <Directory /etc/letsencrypt/.acme-challenges>        Options None        AllowOverride None        Order allow,deny        Allow from all</Directory>

Télécharger – Copier dans le presse-papier

service apache2 reload

Copier dans le presse-papier

Apache 2.4

# /etc/apache2/conf-available/letsencrypt.confAlias /.well-known/acme-challenge /etc/letsencrypt/.acme-challenges <Directory /etc/letsencrypt/.acme-challenges>	Options None	AllowOverride None	Require all granted</Directory>

Télécharger – Copier dans le presse-papier

a2enconf letsencryptservice apache2 reload

Télécharger – Copier dans le presse-papier

Vous pouvez vérifier que le répertoire est bien accessible en adaptant l’url suivante à votre domaine http://geodiversite.net/.well-known/acme-challenge/test.txt

Créez un fichier de configuration minimal pour le script afin de définir votre adresse email et l’emplacement du répertoire .acme-challenges :

# /etc/letsencrypt/configCONTACT_EMAIL=admin@site.bbWELLKNOWN="${BASEDIR}/.acme-challenges"

Télécharger – Copier dans le presse-papier

Pour finir, créez le fichier qui listera les domaines à traiter. Chaque ligne correspond à un domaine et ses alias :

# /etc/letsencrypt/domains.txtgeodiversite.net www.geodiversite.net

Télécharger – Copier dans le presse-papier

Création et renouvellement de certificat 

Pour créer ou renouveler les certificats des domaines, utilisez la commande suivante :

./dehydrated -c# INFO: Using main config file /etc/letsencrypt/config+ Generating account key...+ Registering account key with letsencrypt...Processing geodiversite.net with alternative names: www.geodiversite.net + Signing domains... + Creating new directory /etc/letsencrypt/certs/geodiversite.net ... + Generating private key... + Generating signing request... + Requesting challenge for geodiversite.net... + Requesting challenge for www.geodiversite.net... + Responding to challenge for geodiversite.net... + Challenge is valid! + Responding to challenge for www.geodiversite.net... + Challenge is valid! + Requesting certificate... + Checking certificate... + Done! + Creating fullchain.pem... + Done!

Télécharger – Copier dans le presse-papier

Si tout se passe bien comme ci-dessus, les certificats sont créés dans le répertoire /etc/letsencrypt/certs/. Il ne reste plus qu’à configurer Apache pour qu’il les utilise.

Voici un exemple de configuration pour debian stretch à placer dans le virtualhost de chaque domaine (geodiversite.net dans notre cas). Vous pouvez utiliser l’outil fourni par Mozilla pour générer une configuration adaptée à vos besoins.

<VirtualHost *:443>	# ...	SSLEngine On	SSLCertificateFile /etc/letsencrypt/certs/geodiversite.net/fullchain.pem	SSLCertificateKeyFile /etc/letsencrypt/certs/geodiversite.net/privkey.pem	SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1	SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384	SSLHonorCipherOrder off	SSLSessionTickets off 	Header always set Strict-Transport-Security "max-age=63072000"	# Optimisations optionnelles cf https://observatory.mozilla.org/	Header always set X-Content-Type-Options "nosniff"	Header always set X-XSS-Protection "1; mode=block"</VirtualHost>

Télécharger – Copier dans le presse-papier

Il ne reste plus qu’à mettre en place le renouvellement automatique des certificats et s’assurer qu’Apache recharge sa configuration à ce moment.

Créez un fichier /etc/letsencrypt/hook.sh.

#!/bin/bash if [ ${1} == "deploy_cert" ]; then    echo " + Hook: Restarting Apache..."    service apache2 reloadelse    echo " + Hook: Nothing to do..."fi

Télécharger – Copier dans le presse-papier

Rendez celui-ci exécutable et renseignez-le dans le fichier de configuration.

chmod 755 hook.shecho 'HOOK="${BASEDIR}/hook.sh"' >> config

Télécharger – Copier dans le presse-papier

Pour finir, ajoutez une tâche CRON dans /etc/cron.daily/letsencrypt pour l’exécuter quotidiennement (sans oublier de la rendre exécutable).

#!/bin/sh/etc/letsencrypt/dehydrated -c -g >> /var/log/letsencrypt.log 2>&1

Télécharger – Copier dans le presse-papier

Vous pouvez tester son bon fonctionnement en appelant /etc/cron.daily/letsencrypt.

Comment installer MySQL sur Ubuntu 20.04

Étape 1 – Installation de MySQL

Sur Ubuntu 20.04, vous pouvez installer MySQL en utilisant le référentiel de paquets APT. Au moment de la rédaction de ce document, la version de MySQL disponible dans le référentiel Ubuntu par défaut est la version 8.0.19.

Pour l’installer, mettez à jour l’index des paquets sur votre serveur si vous ne l’avez pas fait récemment :

sudo apt update

 Copy

Ensuite, installez le paquet mysql-server​​​ :

sudo apt install mysql-server

 Copy

Cela installera MySQL, mais ne vous demandera pas de définir un mot de passe ou de faire d’autres changements de configuration. Comme cela rend votre installation de MySQL non sécurisée, nous allons aborder ce point.

Étape 2 – Configuration de MySQL

Pour les nouvelles installations de MySQL, vous devrez exécuter le script de sécurité inclus dans le SGBD. Ce script modifie certaines des options par défaut les moins sûres pour des choses comme les connexions root distantes et les sample users.

Exécutez le script de sécurité avec sudo :

sudo mysql_secure_installation

 Copy

Vous serez alors guidé à travers une série d’invites où vous pourrez apporter quelques modifications aux options de sécurité de votre installation MySQL. La première invite vous demandera si vous souhaitez configurer le plugin Validate Password, que vous pouvez utiliser pour tester la solidité de votre mot de passe MySQL.

Si vous choisissez de mettre en place le plugin Validate Password, le script vous demandera de choisir un niveau de validation du mot de passe. Le niveau le plus fort – que vous sélectionnez en entrant 2 – exigera que votre mot de passe comporte au moins huit caractères, dont un mélange de majuscules, de minuscules, de chiffres et de caractères spéciaux :

OutputSecuring the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
 2

Que vous choisissiez ou non de configurer le plugin Validate Password, l’invite suivante vous demandera de définir un mot de passe pour l’utilisateur root de MySQL. Entrez et confirmez le mot de passe sécurisé de votre choix :

OutputPlease set the password for root here.


New password:

Re-enter new password:

Si vous avez utilisé le plugin Validate Password, vous recevrez des commentaires sur la force de votre nouveau mot de passe. Ensuite, le script vous demandera si vous voulez continuer avec le mot de passe que vous venez de saisir ou si vous voulez en saisir un nouveau. En supposant que vous êtes satisfait de la force du mot de passe que vous venez d’entrer, saisissez Y pour poursuivre le script :

OutputEstimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

À partir de là, vous pouvez appuyer sur Y puis sur ENTER pour accepter les valeurs par défaut pour toutes les questions suivantes. Cela supprimera les utilisateurs anonymes et la base de données de test, désactivera les connexions root à distance, et chargera ces nouvelles règles afin que MySQL respecte immédiatement les modifications que vous avez apportées.

Notez que même si vous avez défini un mot de passe pour l’utilisateur MySQL root, cet utilisateur n’est pas configuré pour s’authentifier avec un mot de passe lors de la connexion au shell MySQL. Si vous le souhaitez, vous pouvez ajuster ce paramètre en suivant l’étape 3.

Étape 3 – (Facultatif) Ajustement de l’authentification et des privilèges de l’utilisateur

Dans les systèmes Ubuntu fonctionnant sous MySQL 5.7 (et versions ultérieures), l’utilisateur MySQL root est configuré pour s’authentifier en utilisant le plugin auth_socket par défaut plutôt qu’avec un mot de passe. Cela permet d’améliorer la sécurité et la convivialité dans de nombreux cas, mais cela peut aussi compliquer les choses si vous devez autoriser un programme externe (par exemple, phpMyAdmin) à accéder à l’utilisateur.

Afin d’utiliser un mot de passe pour se connecter à MySQL en tant que root, vous devrez changer sa méthode d’authentification de auth_socket à un autre plugin, tel que caching_sha2_password ou mysql_native_password. Pour ce faire, ouvrez l’invite MySQL depuis votre terminal :

sudo mysql

 Copy

Ensuite, vérifiez la méthode d’authentification utilisée par chacun de vos comptes utilisateurs MySQL à l’aide de la commande suivante :

SELECT user,authentication_string,plugin,host FROM mysql.user;

 Copy

Output+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root             |                                                                        | auth_socket           | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)

Dans cet exemple, vous pouvez voir que l’utilisateur root s’authentifie effectivement en utilisant le plugin auth_socket. Pour configurer le compte root afin qu’il s’authentifie avec un mot de passe, lancez une instruction ALTER USER pour modifier le plugin d’authentification utilisé et définir un nouveau mot de passe.

Veillez à remplacer password par un mot de passe fort de votre choix, et souvenez-vous que cette commande modifiera le mot de passe root que vous avez défini à l’étape 2 :

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';

 Copy

Remarque : L’instruction ALTER USER précédente définit l’utilisateur MySQL root pour s’authentifier avec le plugin caching_sha2_passwordSelon la documentation officielle de MySQLcaching_sha2_password est le plugin d’authentification préféré de MySQL, car il fournit un cryptage de mot de passe plus sûr que l’ancien, mais encore largement utilisé, mysql_native_password.

Cependant, de nombreuses applications PHP – phpMyAdmin, par exemple – ne fonctionnent pas de manière fiable avec caching_sha2_password. Si vous prévoyez d’utiliser cette base de données avec une application PHP, vous pouvez définir root pour vous authentifier avec mysql_native_password à la place :

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

 Copy

Exécutez ensuite FLUSH PRIVILEGES qui ordonne au serveur de recharger les tableaux de subventions et de mettre vos nouvelles modifications en vigueur :

FLUSH PRIVILEGES;

 Copy

Vérifiez à nouveau les méthodes d’authentification utilisées par chacun de vos utilisateurs pour confirmer que root ne s’authentifie plus à l’aide du plugin auth_socket :

SELECT user,authentication_string,plugin,host FROM mysql.user;

 Copy

Output+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root             | *3636DACC8616D997782ADD0839F92C1571D6D78F                              | caching_sha2_password | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)

Vous pouvez voir dans cet exemple que l’utilisateur MySQL root s’authentifie maintenant en utilisant le plugin caching_sha2_password. Une fois que vous avez confirmé cela sur votre propre serveur, vous pouvez quitter le shell MySQL :

exit

 Copy

Certains peuvent aussi trouver qu’il est plus adapté à leur travail de se connecter à MySQL avec un utilisateur dédié. Pour créer un tel utilisateur, ouvrez à nouveau le shell MySQL :

sudo mysql

 Copy

Remarque : si vous avez activé l’authentification par mot de passe pour root, comme décrit dans les paragraphes précédents, vous devrez utiliser une commande différente pour accéder au shell MySQL. Ce qui suit permettra d’exécuter votre client MySQL avec les privilèges d’utilisateur habituels, et vous n’obtiendrez les privilèges d’administrateur au sein de la base de données qu’en vous authentifiant :

mysql -u root -p

 Copy

De là, créez un nouvel utilisateur et attribuez-lui un mot de passe fort :

CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

 Copy

Ensuite, accordez à votre nouvel utilisateur les privilèges appropriés. Par exemple, vous pourriez accorder les privilèges d’utilisateur à tous les tableaux de la base de données, ainsi que le pouvoir d’ajouter, de modifier et de supprimer des privilèges d’utilisateur, avec cette commande :

GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

 Copy

Notez qu’à ce stade, vous n’avez pas besoin d’exécuter à nouveau la commande FLUSH PRIVILEGES.  Cette commande n’est nécessaire que lorsque vous modifiez les tableaux de subvention en utilisant des instructions comme INSERTUPDATE ou DELETE. Comme vous avez créé un nouvel utilisateur, au lieu de modifier un utilisateur existant, le FLUSH PRIVILEGES est inutile ici.

Ensuite, quittez le shell MySQL :

exit

 Copy