Lorsque vous vous connectez à un serveur MySQL, vous utiliserez en règle générale un mot de passe. Le mot de passe sera transmis crypté lors de la connexion, et non pas en clair.
Toutes les informations suivantes seront transmises en clair, ce qui fait que quiconque observe la connexion peut lire les informations. Si vous êtes concerné par les problèmes de sécurité, vous pouvez utiliser le protocole compressé (à partir de MySQL 3.22) pour rendre les choses plus difficile. Pour complexifier encore la lecture, vous pouvez installer ssh (http://www.cs.hut.fi/ssh). Ce protocol fourni un cryptage de la connexion TCP/IP entre le client MySQL et me serveur MySQL.
Pour sécuriser un système MySQL, il est fortement recommandé de suivre les recommandations suivantes :@:
mysql -u other_user nom_base_de_donnees si other_user n'a pas de mot de passe. C'est une stratégie standard dans les applications clients/serveur. Vous pouvez changer les mots de passe de tous les utilisateurs en éditant le script mysql_install_db puis en l'exécutant, ou bien avec la commande root suivante :@:
shell> mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('new_password')
WHERE user='root';
mysql> FLUSH PRIVILEGES;
root Unix. mysqld peut être exécuté par n'importe quel utilisateur. Vous pouvez aussi créer un nouvel utilisateur mysql augmenter la sécurité. Si vous utilisez mysqld à partir d'un compte Unix autre que le root, vous n'avez pas à changer l'utilisateur the root dans la table user, car les noms d'utilisateur MySQL n'ont rien à voir avec ceux d'Unix. Vous pouvez éditer le script mysql.server pour lancer mysqld avec un autre utilisateur. Généralement, on le fait avec la commande su. Pour plus de détails, @pref{Changing MySQL user}.
root Unix dans le script mysql.server, assurez vous que ce fichier n'est lisible que par le root.
mysqld est le seul à avoir les droits d'écriture / lecture dans le dossier des bases de données.
mysqladmin processlist dévoile le texte de toutes les commandes en cours d'exécution, ce qui fait que tout ceux qui ont ce droit, ont vue sur les commandes du type UPDATE user SET password=PASSWORD('not_secure'). mysqld garde toujours une connexion de libre pour les utilisateurs qui ont le droit de process, afin que le root MySQL puisse toujours se connecter et s'assurer du bon fonctionnement des connexions en cours.
mysqld! Pour sécuriser un peu ceci, tous les fichiers généré par SELECT ... INTO OUTFILE ne sont lisibles par tous, mais non modifiables. Le droit de file peut aussi être utilisé pour lire un fichier quelconque sur le serveur. Cela permet notamment de lire le fichier ``/etc/passwd'' dans une table, et de le lire avec SELECT.
--secure de mysqld devrait être suffisante pour sécuriser les noms d'hôtes. Dans toues les cas, méfiez vous des jokers dans les noms d'hôtes.
Les options suivantes affectent la sécurité :@:
gethostbyname() sont vérifiées pour s'assurer qu'elle correspondent bien à l'hôte original. Cela rend plus difficile de simuler un hôte. Cette option effectue aussi un nettoyage hygiénique des hôtes. Cette option a été enlevée par défaut dans la version MySQL 3.21 car elle peut ralentir le serveur, à cause du temps de résolution. MySQL 3.22 conserve les noms d'hôtes qu'il a déjà résolu dans un cache.
mysqladmin reload.)
Host doivent contenir des valeurs nuémriques, ou bien localhost.
mysqld doivent être faites avec les sockets Unix. Cette option n'est pas disponibles pour les systèmes qui utilisent les MIT-pthreads, car MIT-pthreads ne supporte pas les sockets Unix.