Lorsque vous vous connectez à MySQL, vous devriez avoir besoin d'un mot de passe. Ce mot de passe n'est pas transmis en texte clair sur le réseau. La gestion des mots de passe durant l'identification des utilisateurs a été améliorée en MySQL 4.1.1 pour être très sécurisée. Si vous utilisez une vieille version de MySQL, ou si vous utilisez toujours les mots de passe de type pre-4.1.1, l'algorithme de chiffrement n'est pas très fort, quelques efforts permettront à un pirate d'obtenir votre mot de passe s'il est capable de surveiller le trafic entre le client et le serveur. (Voyez Section 5.5.9, « Hashage de mots de passe en MySQL 4.1 » pour une discussion des différentes méthodes de gestions des mots de passe). Si la connexion entre le client et le serveur utilise des réseaux non fiables, il est alors recommandé d'utiliser un tunnel SSH.
        Toutes les autres informations sont transférées comme du texte
        clair, et quiconque surveille la connexion pourra les lire. Si
        vous souhaitez relever ce niveau de sécurité, il est
        recommandé d'utiliser le protocole compressé (avec les
        versions de MySQL 3.22 et plus récentes), pour compliquer
        considérablement le problème. Pour rendre la communication
        encore plus sûre, vous pouvez aussi utiliser
        ssh. Vous trouverez une version Open
        Source du client ssh sur le site
        http://www.openssh.org/,
        et une version commerciale du client ssh sur
        le site de
        http://www.ssh.com/.
        Avec eux, vous pouvez mettre en place une connexion TCP/IP
        chiffrée entre le serveur et le client MySQL.
      
Si vous utilisez MySQL 4.0, vous pouvez aussi utiliser le support OpenSSL interne. See Section 5.6.7, « Utilisation des connexions sécurisées ».
Pour rendre le système MySQL encore plus sûr, nous vous recommandons de suivre les suggestions suivantes :
            Utilisez des mots de passe pour tous les utilisateurs MySQL.
            N'oubliez pas que tout le monde peut se connecter avec un
            nom d'utilisateur quelconque, simplement avec l'option
            mysql -u autre_utilisateur nom_de_base,
            si autre_utilisateur n'a pas de mot de
            passe. C'est un comportement classique pour les applications
            client/serveur que le client spécifie son nom
            d'utilisateur. Il sera plus difficile à un attaquant de
            pénétrer dans votre serveur si tous les comptes ont un mot
            de passe.
          
            Vous pouvez modifier les mots de passe de tous les
            utilisateurs en modifiant le script
            mysql_install_db avant de l'exécuter, ou
            vous pouvez modifier seulement le mot de passe du
            root MySQL comme ceci@ :
          
shell>mysql -u rootmysql>UPDATE mysql.user SET Password=PASSWORD('nouveau_mot_de_passe')->WHERE User='root';mysql>FLUSH PRIVILEGES;
            N'exécutez jamais le démon MySQL avec l'utilisateur Unix
            root. C'est très dangereux, car tout
            personne ayant le droit de FILE pour
            créer des fichiers au nom du root (par
            exemple, ~root/.bashrc). Pour éviter
            cela, mysqld refusera de s'exécuter au
            nom de root à moins que soit précisé
            l'option --user=root.
          
            mysqld peut être exécuté avec un
            utilisateur ordinaire sans droits particuliers. Vous pouvez
            aussi créer un utilisateur Unix mysql
            pour rendre cela encore plus sûr. Si vous exécutez
            mysqld sous un autre utilisateur Unix,
            vous n'avez pas à changer le mot de passe
            root dans la table
            user, car les noms d'utilisateurs MySQL
            n'ont rien à voir avec les noms d'utilisateurs Unix. Pour
            démarrer mysqld sous un autre nom
            d'utilisateur Unix, ajoutez la ligne
            user, qui spécifie le nom de
            l'utilisateur, dans le fichier d'options de
            [mysqld] /etc/my.cnf
            ou dans le fichier my.cnf présent dans
            le dossier de données du serveur. Par exemple :
          
[mysqld] user=mysql
            Cette ligne va forcer le serveur à démarrer en tant
            qu'utilisateur mysql, même si vous
            démarrez le serveur manuellement ou avec les scripts
            safe_mysqld, ou
            mysql.server. Pour plus de détails,
            voyez Section A.3.2, « Comment exécuter MySQL comme un utilisateur normal ».
          
            Exécuter mysql sous un autre compte Unix
            que root ne signifie pas que vous devez
            changer le nom de root dans la table
            user. Les comptes utilisateurs de MySQL
            n'ont rien à voir avec ceux du compte Unix.
          
            N'autorisez pas l'utilisation de liens symboliques pour les
            tables. Cette fonctionnalité peut être désactivée avec
            l'option --skip-symbolic-links. C'est
            particulièrement important si vous utilisez
            mysqld comme root, car
            tout utilisateur a alors le droit d'écrire des données sur
            le disque, n'importe où sur le système!! See
            Section 7.6.1.2, « Utiliser les liens symboliques avec les tables sous Unix ».
          
            Vérifiez que l'utilisateur Unix qui exécute
            mysqld est le seul utilisateur avec les
            droits de lecture et écriture dans le dossier de base de
            données.
          
            Ne donnez pas le droit de PROCESS à tous
            les utilisateurs. La liste fournie par mysqladmin
            processlist affiche le texte des requêtes
            actuellement exécutées, ce qui permet à toute personne
            pouvant exécuter cette commande de lire des valeurs qui
            seraient en clair, comme : UPDATE user SET
            password=PASSWORD('not_secure').
          
            mysqld réserve une connexion
            supplémentaire pour les utilisateurs qui ont le droit de
            PROCESS, afin que le
            root MySQL puisse toujours se connecter
            et vérifier que tout fonctionne bien, même s'il ne reste
            plus de connexions libres pour les autres utilisateurs.
          
            Le droit SUPER peut être utilisé pour
            fermer des connexions clients, changer les variables
            systèmes et contrôler la réplication.
          
            Ne donnez pas le droit de FILE à tous
            les utilisateurs. Tout utilisateur qui possède ce droit
            peut écrire un fichier n'importe où sur le serveur, avec
            les droits hérités du démon mysqld !
            Pour rendre cela plus sécuritaire, tous les fichiers
            générés par SELECT ... INTO OUTFILE
            sont lisibles par tous, mais personne ne peut les modifier.
          
            Le droit de FILE peut aussi être
            utilisé pour lire n'importe quel fichier accessible en
            lecture au démon qui fait tourner MySQL. Il devient donc
            possible, suivant les configurations, d'utiliser la commande
            LOAD DATA sur le fichier
            /etc/passwd pour tout mettre en table,
            et ensuite le relire avec la commande
            SELECT.
          
Si vous ne faites pas confiance à votre DNS, vos pouvez simplement utiliser des adresses IP au lieu des noms d'hôtes. Dans ce cas, soyez très prudents lors de la création de droits qui utilisent des caractères joker.
            Si vous voulez restreindre le nombre de connexions d'un
            utilisateur, vous pouvez le faire en utilisant la variable
            max_user_connections de
            mysqld. La commande
            GRANT dispose aussi d'option de contrôle
            des ressources, pour limiter l'utilisation du serveur par un
            compte utilisateur.
          
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

