Une caractéristique de MySQL est sa propre sécurité, reposant sur une protection externe. En tant que système de gestion de base de données moderne, complet et efficace, MySQL dispose de ses propres outils pour gérer les utilisateurs et leur accès aux ressources qu'il contrôle.
Si vous ne connaissez pas le nom d'utilisateur et le mot de passe corrects, l'accès à la base de données via MySQL est très difficile.
En mode d'hébergement normal, cela suffit. Les situations imprévues, les attaques de pirates et autres problèmes relèvent de l'administration système externe et des services de sécurité. Ce concept est devenu traditionnel et n'est pratiquement pas discuté.
Installer le serveur MySQL et l'utilisateur root
Quel que soit l'environnement d'exploitation dans lequel le système de gestion de base de données est installé, il a toujours au moins un utilisateur: root. Installez MySQL, créez un utilisateur avec tous les droits root - sans cela, travaillez avecserveur n'est pas possible. Les privilèges de cet utilisateur sont suffisants pour:
- créer et administrer de nouveaux utilisateurs;
- créer et gérer des bases de données.
Il est fondamentalement possible que des utilisateurs "sans mot de passe" existent dans MySQL, mais c'est inacceptable.
Pratique courante:
- serveur installé sur son propre ordinateur, où l'hébergement peut être installé (option locale);
- serveur est sur un hébergement public sur Internet.
Dans le premier cas, il est possible de travailler avec le serveur depuis la ligne de commande et d'utiliser phpMyAdmin, dans le second cas, uniquement phpMyAdmin ou un outil similaire, mais la ligne de commande est accessible via un accès SSH distant.
Propres outils d'administration
Le sentiment de parenté avec la famille Unixoid et avec le passé des serveurs Apache est une caractéristique de MySQL: créer un utilisateur est une ligne de commande avec une syntaxe étrange. Pour les professionnels travaillant avec Linux et des systèmes similaires, c'est aussi familier qu'il paraît sauvage aux yeux des utilisateurs de Windows qui ne sont jamais « entrés dans la vraie vie ».
La création d'un utilisateur commence par le lancement de la ligne de commande du serveur. Dans un environnement Windows, cela se fait comme suit.
D'abord (1) vous devez exécuter la ligne de commande en tant qu'administrateur, puis allez dans le dossier où se trouve MySQL (2), puisdémarrer le serveur lui-même (3):
mysql -u… -p
ici "-u…" et "-p" sont des clés qui pointent vers le nom "…"=root (ou autre nom) et son mot de passe. En principe, un utilisateur peut ne pas être root, mais avoir des droits "root" (administrateurs).
Important: le serveur tourne en permanence, ici mysql -u… -p est la commande pour accéder au serveur, pas pour le démarrer.
Dans un environnement Linux et des systèmes similaires, une telle commande est une action "native" et, en règle générale, est déterminée en démarrant simplement mysqld au bon endroit (au bon chemin), cela doit être vérifié avec l'administrateur. Il y a généralement un nom différent ici: pas mysql, mais mysqld. Ici aussi, cette action n'est pas toujours disponible pour tous les utilisateurs (du système d'exploitation, pas du serveur MySQL). Contrairement à Windows, dans Linuxoids, l'ordre et la sécurité sont une exigence naturelle et non négociable, qui est toujours traitée de manière civilisée.
Dans tous les cas, une fois mysql démarré, il l'annoncera avec une invite (4):
mysql>
et il sera possible de travailler avec les utilisateurs et les bases de données.
Remarque. Lors de l'installation dans un environnement Windows, tout: Apache, MySQL, PHP, phpMyAdmin peut être défini sur des chemins par défaut, mais il est recommandé d'utiliser des emplacements plus compacts et plus proches pour ces outils importants:
- c:\SCiA\Apache;
- c:\SCiA\PHP;
- c:\SCiA\MySQL;
- …
- c:\SCiB\localhost\www\phpMyAdmin;
- c:\SCiB\site1\www;
- c:\SCiB\site2\www;
- …
- c:\SCiB\siteN\www\.
Cette logique simplifiera non seulement l'administration, mais étendra également la capacité du développeur à passer d'une version de produit à l'autre et à gérer leurs fonctionnalités.
Travailler sur la ligne de commande MySQL
Une fois que le serveur a répondu et fourni sa ligne de commande, les utilisateurs peuvent être créés et se voir attribuer des autorisations.
Dans cet exemple, la commande create user a créé l'utilisateur Petrov avec le mot de passe 123DFG. Si une erreur est commise lors de la saisie d'une commande, le serveur propose de la corriger, mais mieux vaut ne jamais se tromper en travaillant sur la ligne de commande !
La commande suivante accorde tous les privilèges donne tous les droits sur tout. La commande flush peut être omise, mais elle 'ouvre' le tampon des commandes, c'est-à-dire qu'elle corrige leur exécution.
MySQL: créez un utilisateur et accordez les droits à la base de données
Commande utilisée dans l'exemple:
ACCORDER TOUS LES PRIVILÈGES SUR. À 'Petrov'@'localhost';
accorde en fait à l'utilisateur Petrov l'accès à toutes les bases de données (premier astérisque) à toutes les tables (deuxième astérisque).
En règle générale MySQL, la création d'un utilisateur est:
GRANT [type de privilège] ON [nom de la base de données].[nom de la table] TO '[user]'@'localhost';
Les privilèges suivants sont autorisés:
- TOUS LES PRIVILÈGES - tous les droits.
- CREATE - le droit de créer de nouvelles tables/bases de données.
- DROP - le droit de supprimer des tables/bases de données.
- DELETE - le droit de supprimer des informations dans les tableaux.
- INSERT - le droit d'écrire des informations dans les tables.
- SELECT - le droit de lire les informations des tables.
- UPDATE - le droit de mettre à jour les informations dans les tableaux.
- GRANT OPTION - le droit de travailler avec les privilèges des autres utilisateurs.
D'un point de vue pratique, dans MySQL "créer un utilisateur" implique trois options pour les droits:
- tous les droits sur toutes les bases de données et tous les utilisateurs;
- lire et écrire;
- lecture seule.
D'autres options d'octroi de droits sont rarement requises. Dans l'environnement Linux, il y a beaucoup plus de motifs de liberté "légale" (et de nécessité), mais il y a là beaucoup plus d'opportunités que dans Windows.
L'opération inverse de MySQL "créer un utilisateur" est drop.
déposer l'utilisateur 'Petrov'@'localhost';
Après avoir exécuté cette commande, Petrov ne sera plus un utilisateur et ses privilèges seront perdus. Pour modifier les privilèges, utilisez la commande:
REVOKE [privilege] ON [DB].[Table] TO '[user]'@'localhost';
L'action habituelle dans MySQL est de créer un utilisateur ou de le supprimer, mais la modification des privilèges est également une opération valide (rarement demandée).
Utiliser phpMyAdmin
Il existe de nombreuses implémentations de ce merveilleux outil. Selon la version d'Apache, PHP et MySQL utilisée, il faut souvent beaucoup de temps pour trouver la bonne version de ce produit, mais une fois phpMyAdmin installé avec succès, l'utilisateur dispose de nombreuses fonctionnalités pratiques et d'un confortinterface.
En utilisant phpMyAdmin, vous pouvez demander à MySQL de créer un utilisateur pour n'importe quel hôte et de gérer les utilisateurs existants de manière quasi chirurgicale.
phpMyAdmin n'est pas le seul outil avec une interface confortable, intuitive et riche en fonctionnalités, mais c'est l'outil le plus populaire pour administrer les serveurs MySQL.
À propos de la ligne de commande et de la sécurité
Bien sûr, utiliser la ligne de commande MySQL est un exercice peu attrayant, mais il faut garder à l'esprit que dans certains cas seule la ligne de commande du serveur peut sauver la base de données ou l'utilisateur, assurer l'import ou l'export des informations.
Les versions logicielles évoluent si rapidement que les développeurs n'ont tout simplement pas le temps de combiner les fonctionnalités de, par exemple, PHP et MySQL, MySQL et phpMyAdmin. Si quelque chose se passe, la ligne de commande sauvera toujours la situation.
Il ne faut pas non plus oublier: l'administration de MySQL consiste uniquement à accéder à ses bases de données et à travers ses fonctionnalités. Les fichiers de la base de données sont accessibles en dehors de MySQL. La sécurisation externe de MySQL et des ressources qu'il contrôle est un besoin réel et important.