Lorsque vous installez le service de base de données MySQL, il crée automatiquement un compte root. Vous pouvez l’utiliser pour effectuer n’importe quelle action et accéder à n’importe quelle donnée. Cela peut être un cauchemar en matière de sécurité !
Pour assurer la sécurité de votre site, il est sage de créer des comptes supplémentaires qui n’ont pas ces privilèges élevés. Heureusement, il existe plusieurs façons de créer de nouveaux utilisateurs dans MySQL.
Dans cet article, nous allons explorer toutes les raisons pour lesquelles vous pourriez vouloir ajouter des utilisateurs supplémentaires à votre base de données MySQL. Nous vous montrerons ensuite comment créer ces comptes et gérer leurs permissions pour une sécurité maximale. C’est parti !
Introduction à MySQL (et pourquoi vous voulez peut-être ajouter de nouveaux utilisateurs)
La distribution officielle de WordPress prend en charge les moteurs de base de données MySQL et MariaDB. Si vous avez pesé le pour et le contre, vous avez peut-être opté pour la dernière version du logiciel de gestion de base de données MySQL. À un moment donné, vous voudrez peut-être créer des utilisateurs supplémentaires.
Dans MySQL, chaque compte se compose d’un nom d’utilisateur et d’un mot de passe. Il indique également le ou les hôtes clients sur lesquels l’utilisateur peut se connecter à votre serveur MySQL.
Vous créerez généralement des comptes supplémentaires lorsque plusieurs personnes auront besoin d’accéder à votre base de données. Bien que plusieurs personnes puissent interagir avec MySQL à partir du même compte, le partage des identifiants de connexion constitue un risque pour la sécurité. Si vous détectez des erreurs ou une activité suspecte dans votre base de données, un compte partagé rendra également plus difficile l’identification du coupable.
MySQL est un système basé sur les autorisations. Il vous permet de contrôler exactement les informations auxquelles chaque utilisateur a accès et les actions qu’il peut effectuer. Créer plusieurs comptes avec des autorisations différentes est bien plus sûr que de se fier à un seul compte avec un accès global.
Lorsque vous installez MySQL, il crée automatiquement un seul compte super-utilisateur ‘root’@’localhost’. Même si vous gérez la base de données en solo, il est toujours sage de créer au moins un compte supplémentaire. Ainsi, vous ne perdrez pas l’accès à l’ensemble de votre base de données simplement parce que vous rencontrez un problème avec ‘root’@’localhost’
Ce compte root a également la permission d’accéder à toutes vos données et d’effectuer n’importe quelle action. Même les utilisateurs expérimentés de bases de données peuvent causer de sérieux dégâts avec ce niveau de contrôle. C’est pourquoi il est préférable de créer un compte utilisateur ordinaire que vous pouvez utiliser pour l’administration quotidienne de MySQL. Vous pouvez ensuite réserver ‘root’@’localhost’ pour les tâches qui nécessitent des privilèges élevés.
Comment gérer votre base de données MySQL
Lorsqu’il s’agit de gérer votre base de données MySQL, vous avez deux choix. Vous pouvez utiliser MySQL Shell, qui est une interface Python, Javascript ou SQL et un composant du serveur MySQL. Cet outil est disponible sur Microsoft Windows, Linux et macOS pour les plateformes 64 bits.
Vous pouvez aussi utiliser l’outil gratuit phpMyAdmin. Voyons de plus près ces deux options.
1. Gérez votre base de données à partir de MySQL Shell
Pour accéder à l’invite MySQL Shell, ouvrez un Terminal ou une Invite de commande. Vous pouvez ensuite exécuter la commande suivante :
> mysqlsh
Cela ouvre MySQL Shell sans se connecter à un serveur. Par défaut, MySQL Shell se lance en mode JavaScript, mais vous pouvez changer de mode en utilisant la commande sql, py ou js:
Dans MySQL Shell, les connexions aux instances de MySQL Server sont gérées par un objet de session. Si le protocole X est disponible, vous pouvez alors utiliser un objet Session. Notez que le protocole X nécessite le plugin X.
Le plugin X écoute le port spécifié par mysqlx_port, qui a la valeur 33060 par défaut. Vous pouvez créer un objet Session à l’aide de ce qui suit :
–mysqlx (–mx)
Par exemple, vous pouvez établir une connexion X Protocol à une instance locale de MySQL Server écoutant sur le port 33060, en utilisant ce qui suit :
shell> mysqlsh –mysqlx -u user -h localhost -P 33060
Si le protocole X n’est pas disponible, vous pouvez utiliser un objet ClassicSession. Cet objet est destiné à exécuter SQL contre des serveurs utilisant le protocole MySQL classique. Pour créer un objet ClassicSession, saisissez :
–mysql (–mc)
Vous pouvez vérifier les résultats de votre tentative de connexion en utilisant la commande status du MySQL Shell ou la méthode shell.status(). Par exemple :
mysql-js []> shell.status()
Pour attribuer des privilèges via MySQL Shell, vous devez exécuter vos commandes en tant qu’utilisateur root. Pour cela, saisissez ce qui suit et donnez votre mot de passe d’utilisateur root MySQL lorsque vous y êtes invité :
mysql -u root -p
Ici, le -u indique que le paramètre suivant est un nom d’utilisateur, qui dans ce cas est root. Au lieu d’afficher le mot de passe en texte clair, nous utilisons -p. Cela indique que le mot de passe n’est pas fourni et que vous devrez le saisir lorsque vous y serez invité. L’utilisation de ces paramètres peut vous aider à sécuriser votre compte root.
2. Gérez votre base de données depuis phpMyAdmin
Si vous préférez utiliser une interface utilisateur graphique (GUI), vous pouvez gérer la base de données MySQL via phpMyAdmin. Avec les autorisations nécessaires, cette interface peut vous permettre de créer de nouveaux comptes, de voir et de modifier les autorisations, et de supprimer les comptes dont vous ne nécessitez plus. Vous devez être connecté en tant que root pour effectuer ces actions.
Vous pouvez télécharger cet outil gratuitement sur le site web de phpMyAdmin.
Comment créer et gérer un utilisateur MySQL (4 processus clés)
Une fois que vous êtes connecté à votre base de données, vous pouvez effectuer de nombreuses actions différentes. Voici quatre façons clés de gérer vos comptes d’utilisateur MySQL.
1. Créer un nouvel utilisateur dans le serveur de base de données
Dans phpMyAdmin, vous pouvez créer un compte en utilisant le lien Ajouter un nouvel utilisateur. Vous pouvez ensuite utiliser les champs de texte et les listes déroulantes pour configurer ce compte :
À ce stade, vous avez la possibilité d’attribuer des privilèges globaux. Cela accorde à l’utilisateur un accès illimité à toutes vos bases de données et tables. Cela peut représenter un risque pour la sécurité, alors vous ne devriez donner ces privilèges élevés que lorsqu’ils sont nécessaires. Vous pouvez attribuer des privilèges spécifiques aux bases de données après avoir créé ce compte.
Pour créer un nouveau compte via le shell MySQL, saisissez la commande CREATE USER. Vous devrez également fournir un nom d’utilisateur et le nom d’hôte. Ce dernier est le nom de l’hôte à partir duquel l’utilisateur se connecte au serveur MySQL :
CREATE USER ‘exampleuser’@’localhost’ IDENTIFIED BY ‘password’ ;
En saisissant cette commande, assurez-vous de remplacer exampleuser et password par les valeurs que vous voulez attribuer à ce compte. L’utilisateur peut toujours changer son mot de passe MySQL ultérieurement.
Dans l’exemple ci-dessus, nous définissons le nom d’hôte sur « localhost ». Par conséquent, l’utilisateur ne pourra se connecter au serveur MySQL qu’à partir du système où le serveur MySQL est exécuté.
Vous pouvez remplacer le mot localhost par l’adresse de votre serveur. Par exemple, si cet utilisateur a besoin d’accéder à MySQL depuis une machine avec l’adresse de protocole Internet (IP) 11.0.0.0, vous exécuterez ce qui suit :
CREATE USER ‘newuser’@’11.0.0.0’ IDENTIFIED BY ‘user_password’ ;
Si vous voulez créer un utilisateur qui peut se connecter depuis n’importe quel hôte, vous pouvez inclure le caractère générique % dans votre commande. Par exemple :
CREATE USER ‘newuser’@’%’ IDENTIFIED BY ‘user_password’ ;
Vous pouvez aussi omettre complètement la valeur du nom d’hôte. Cela aura le même résultat.
2. Attribuer des autorisations MySQL via phpMyAdmin
Par défaut, un nouvel utilisateur MySQL n’a pas l’autorisation d’effectuer des actions. Même s’il se connecte à son compte, il ne pourra créer aucune table ni sélectionner aucune donnée.
Après avoir créé un nouvel utilisateur, vous voudrez généralement commencer à lui attribuer des autorisations. Pour que votre base de données reste sécurisée, il est bon de donner à chaque utilisateur les privilèges minimums nécessaires pour effectuer son travail. Il est également judicieux de revoir régulièrement leurs autorisations et de révoquer celles qui sont inutiles.
Vous peuvent modifier les privilèges d’un utilisateur depuis le tableau de bord Utilisateurs de phpMyAdmin.
Accorder un accès illimité peut sembler être l’option la plus facile, mais cela peut mettre votre base de données en danger. À moins que vous n’ayez une raison particulière, vous voudrez généralement éviter de donner à quelqu’un un accès illimité à toute votre base de données.
3. Modifier les permissions des utilisateurs depuis MySQL Shell
Si vous utilisez le Shell MySQL, vous pouvez afficher tous les privilèges accordés à un compte spécifique avec la commande SHOW GRANTS. Vous devrez remplacer « username » et « localhost » par les informations du compte que vous voulez examiner :
SHOW GRANTS FOR ‘username’@’localhost’ ;
Lorsque vous créerez un compte, cette liste sera vide. Vous pouvez commencer à attribuer l’accès à différentes parties de votre base de données à l’aide de la commande GRANT :
GRANT type_de_permission ON database_name.table_name TO ‘username’@’localhost’ ;
Dans cette commande, nous indiquons les privilèges que nous attribuons, suivis de la base de données et des tables auxquelles ces modifications doivent s’appliquer. Enfin, nous fournissons le nom d’utilisateur et le serveur qui recevront les privilèges nommés. Vous trouverez une liste complète de tous les privilèges disponibles dans la documentation officielle de MySQL.
Si vous voulez accorder l’accès à n’importe quelle base de données ou table, vous pouvez utiliser un astérisque (*) à la place du nom de la base de données ou de la table. Par exemple :
GRANT ALL PRIVILEGES ON *. * TO ‘exampleuser’@’localhost’ ;
Ici, nous accordons à exampleuser la permission de lire, modifier, exécuter et effectuer toutes les tâches sur toutes les bases de données et tables. Vous voudrez généralement réserver ces privilèges élevés aux administrateurs.
Parfois, vous pouvez avoir besoin de retirer une permission. Par exemple, vous avez peut-être accordé un privilège par erreur, ou l’utilisateur n’en a plus besoin. Pour révoquer l’accès, exécutez ce qui suit :
REVOKE type_of_permission ON database_name.table_name FROM ‘username’@’localhost’ ;
Si vous attribuez des privilèges à l’aide de la commande GRANT, MySQL devrait remarquer ces changements et les appliquer automatiquement. Cependant, il est toujours judicieux de rafraîchir les privilèges d’un utilisateur en exécutant la commande FLUSH PRIVILEGES ; .
4. Supprimer un utilisateur de MySQL
Parfois, vous pouvez avoir besoin de supprimer un utilisateur de votre base de données MySQL. Par exemple, peut-être que cette personne quitte votre organisation ou qu’elle est transférée dans un autre département. Vous pouvez aussi essayer activement de limiter le nombre de personnes qui peuvent accéder à votre base de données, afin de renforcer ta sécurité.
Si vous travaillez avec MySQL Shell, vous pouvez supprimer un compte à l’aide de l’instruction DROP USER. Cette commande supprimera également tous leurs privilèges :
DROP USER ‘username’@’localhost’ ;
Alternativement, avec phpMyAdmin, trouvez le compte que vous souhaitez retirer sur la page Utilisateurs. Vous pouvez alors sélectionner la case à cocher correspondante et choisir si vous souhaitez également retirer toute base de données portant le même nom.
Lorsque vous êtes satisfait de la procédure, cliquez sur Go. Cette personne sera maintenant supprimée de MySQL.
Résumé
MySQL crée automatiquement un compte super-utilisateur ‘root’@’localhost’, mais ce n’est jamais une bonne idée de l’utiliser pour tout. En créant plusieurs utilisateurs MySQL, vous pouvez attribuer différents privilèges pour assurer la sécurité de vos données.
De plus, vous pouvez vous assurer que vous ne perdez pas l’accès à votre base de données parce que vous avez des problèmes avec ‘root’@’localhost’.
En tant que propriétaire de site web, votre base de données est souvent votre atout le plus précieux. Chez Kinsta, notre équipe d’experts WordPress expérimentés peut vous aider à garder votre base de données en pleine forme.
Tous nos plans d’hébergement incluent un support24/7 ! En vous associant à Kinsta, vous aurez toujours des vétérans de WordPress à portée de main pour vous aider à résoudre tout problème avec votre base de données MySQL.