Lors de l'utilisation de MySQL, les problèmes de sécurité ne peuvent être ignorés. Voici les 23 remarques demandées par MySQL :
1. Si la connexion entre le client et le serveur doit s'étendre et passer par un réseau non fiable, vous devez alors utiliser un tunnel SSH pour crypter la communication de la connexion.
2. Utilisez l'instruction set password pour modifier le mot de passe de l'utilisateur. En trois étapes, connectez-vous d'abord au système de base de données avec "mysql -u root", puis "mysql> update mysql.user set password=password('newpwd')". , et enfin exécuter les privilèges "flush"" fera l'affaire.
3. Les attaques contre lesquelles il faut se prémunir incluent l'anti-écoute clandestine, la falsification, la relecture, le déni de service, etc., qui n'impliquent pas de disponibilité ni de tolérance aux pannes. Toutes les connexions, requêtes et autres opérations sont effectuées à l'aide de mesures de sécurité basées sur l'ACL (liste de contrôle d'accès). Il existe également une certaine prise en charge des connexions SSL.
4. Tout autre utilisateur, à l'exception de l'utilisateur root, n'est pas autorisé à accéder à la table utilisateur dans la base de données principale mysql ;
une fois le mot de passe utilisateur crypté stocké dans la table utilisateur divulgué, d'autres peuvent utiliser la base de données correspondante avec le nom d'utilisateur/mot de passe à volonté. . ;
5. Utilisez les instructions d'octroi et de révocation pour effectuer le contrôle d'accès des utilisateurs ;
6. N'utilisez pas de mots de passe en texte brut, mais utilisez des fonctions de hachage unidirectionnelles telles que md5() et sha1() pour définir des mots de passe
; dans les caractères du dictionnaire comme mot de passe ;
8. Utilisez un pare-feu pour supprimer 50 % des dangers externes et laissez le système de base de données fonctionner derrière le pare-feu, ou placez-le dans la zone DMZ
9. Utilisez nmap pour analyser le port 3306 depuis Internet
;, ou utilisez telnet server_host Le test de la méthode 3306 ne peut pas autoriser l'accès au port TCP 3306 du serveur de base de données à partir d'un réseau non fiable, des paramètres doivent donc être définis sur le pare-feu ou le routeur
10. Afin d'empêcher la transmission malveillante de paramètres illégaux ; , comme Where ID=234, other Mais en entrant Where ID=234 OR 1=1, tout s'affichera, utilisez donc '' ou "" pour utiliser des chaînes dans le formulaire Web et ajoutez %22 à l'URL dynamique pour représenter guillemets doubles, %23 pour représenter le signe dièse et %27 représente un guillemet simple ; il est très dangereux de transmettre des valeurs non vérifiées à la base de données mysql
11.
Vérifiez la taille lors de la transmission des données à mysql ;
pour se connecter à la base de données, il faut utiliser des comptes d'utilisateurs généraux et n'ouvrir que quelques comptes nécessaires. Des autorisations sont accordées à l'utilisateur ;
13. Utiliser des fonctions spécifiques de « caractère d'échappement » dans diverses interfaces de programmation (C C++ PHP Perl Java JDBC, etc.) ;
lorsque vous utilisez la base de données MySQL sur Internet, veillez à transmettre moins de données en texte brut et à utiliser SSL et SSH. Les données cryptées sont transmises ;
14. Apprenez à utiliser les outils tcpdump et strings pour vérifier la sécurité des données transmises, tels que tcpdump -l. -i eth0 -w -src ou dst port 3306 chaînes. Démarrez le service de base de données mysql en tant qu'utilisateur ordinaire ;
15. N'utilisez pas le symbole de lien vers la table, sélectionnez le paramètre --skip-symbolic-links ;
16. Assurez-vous que seul l'utilisateur qui démarre le service de base de données dans le répertoire mysql ; peut lire et lire des fichiers.
17. Les super autorisations de processus ne peuvent pas être accordées aux utilisateurs non administrateurs. La liste de processus mysqladmin peut répertorier le texte de la requête actuellement exécutée et peut être utilisée pour couper les connexions client, modifier. l'état des paramètres de fonctionnement du serveur et les bases de données de copie et de réplication du serveur ;
18. Les autorisations de fichiers ne sont pas accordées aux utilisateurs autres que les administrateurs pour éviter le problème du chargement des données « /etc/passwd » dans la table, puis de l'utilisation de la sélection pour les afficher. 19.
Si vous ne faites pas confiance aux services de la société de services DNS, vous pouvez seules les adresses IP numériques sont définies dans la table d'autorisation de nom ;
20. Utilisez la variable max_user_connections pour activer le processus de service mysqld afin de limiter le nombre de connexions pour un compte spécifié ;
21. L'instruction d'octroi prend également en charge les options de contrôle des ressources ;
22. Démarrez le commutateur d'option de sécurité du processus du service mysqld, --local-infile=0 ou 1. Si la valeur est 0, le programme client ne peut pas utiliser la charge locale. data. Un exemple de Grant Grant Insert(user) sur mysql.user à 'user_name'@'host_name' ; si vous utilisez -- Le système skip-grant-tables n'implémentera aucun contrôle d'accès pour l'accès d'un utilisateur, mais vous pouvez utiliser mysqladmin flush-privileges ou mysqladmin reload pour activer le contrôle d'accès ; par défaut, l'instruction show databases est ouverte à tous les utilisateurs et vous pouvez utiliser --skip-show-databases pour la désactiver.
23. Lorsque vous rencontrez l'erreur 1045 (28000) Accès refusé pour l'utilisateur 'root'@'localhost' (Using password:NO), vous devez réinitialiser le mot de passe. La méthode spécifique est la suivante : commencez par démarrer avec --skip-grant. -tables paramètre mysqld, puis exécutez mysql -u root mysql,mysql>update user set password=password('newpassword') où user='root';mysql>Flush privilèges;, et enfin redémarrez mysql.