Heim >Datenbank >MySQL-Tutorial >MySQL-Sicherheitsvorkehrungen
Bei der Verwendung von MySQL können Sicherheitsprobleme nicht ignoriert werden. Im Folgenden sind 23 von MySQL angeforderte Hinweise aufgeführt:
1. Wenn die Verbindung zwischen dem Client und dem Server ein nicht vertrauenswürdiges Netzwerk umfassen und durch dieses hindurchgehen muss, müssen Sie einen SSH-Tunnel verwenden, um die Kommunikation des Servers zu verschlüsseln Verbindung.
2. Verwenden Sie die set passWord-Anweisung, um das Passwort des Benutzers zu ändern. Melden Sie sich zuerst mit „mysql -u root“ beim Datenbanksystem an, dann „mysql> update mysql.user set password=password(“. 'newpwd')“ und führen Sie abschließend „flush PRivileges“ aus.
3. Zu den Angriffen, vor denen man sich schützen muss, gehören Abhörschutz, Manipulation, Wiedergabe, Denial-of-Service usw., bei denen es nicht um Verfügbarkeit und Fehlertoleranz geht. Alle Verbindungen, Abfragen und anderen Vorgänge werden mithilfe von Sicherheitsmaßnahmen basierend auf ACL (Zugriffskontrollliste) durchgeführt. Es gibt auch eine gewisse Unterstützung für SSL-Verbindungen.
4. Jeder andere Benutzer außer dem Root-Benutzer darf nicht auf die Benutzertabelle in der MySQL-Hauptdatenbank zugreifen.
Sobald das in der Benutzertabelle gespeicherte verschlüsselte Benutzerkennwort durchgesickert ist, können andere Personen nicht darauf zugreifen kann die dem Benutzernamen/Passwort entsprechende Datenbank frei verwenden
5. Verwenden Sie Grant- und Widerrufsanweisungen, um Benutzerzugriffskontrollarbeiten durchzuführen
6. Verwenden Sie keine Klartext-Passwörter, sondern verwenden Sie „Use“. Einweg-Hash-Funktionen wie md5() und sha1() zum Festlegen von Passwörtern
7. Verwenden Sie keine Wörter im Wörterbuch als Passwörter
8. Verwenden Sie Firewalls, um 50 % zu entfernen; Um externe Gefahren zu vermeiden, lassen Sie das Datenbanksystem hinter einer Firewall arbeiten oder platzieren Sie es in einem DMZ-Bereich. 9. Verwenden Sie nmap, um Port 3306 aus dem Internet zu scannen, oder verwenden Sie telnet server_host 3306 zum Testen Zugriff über den TCP-Port 3306 des Datenbankservers in einem nicht vertrauenswürdigen Netzwerk, daher müssen Einstellungen an der Firewall oder am Router vorgenommen werden.
10. Um zu verhindern, dass illegale Parameter, wie z ID=234, aber andere geben es dort ein, wo ID=234 ODER 1=1 bewirkt, dass alles angezeigt wird. Verwenden Sie daher „“ oder „“, um Zeichenfolgen im Webformular zu verwenden, und fügen Sie %22 zur dynamischen URL hinzu, um doppelte Anführungszeichen darzustellen. %23 zur Darstellung des Nummernzeichens und %27 zur Darstellung der einzelnen Anführungszeichen; Es ist sehr gefährlich, ungeprüfte Werte an die MySQL-Datenbank zu übergeben.
11. Überprüfen Sie die Größe, wenn Sie Daten an MySQL übergeben.
12. Anwendungen, die eine Verbindung zur Datenbank herstellen müssen, sollten ein allgemeines Benutzerkonto verwenden, das dem Benutzer nur wenige erforderliche Berechtigungen gewährt.
13. Verwenden Sie in verschiedenen Programmen bestimmte „Escape-Zeichen“-Funktionen Schnittstellen (C C++ PHP Perl Java JDBC usw.);
Achten Sie bei der Verwendung von MySQL-Datenbanken darauf, keine Klartextdaten zu übertragen und verwenden Sie SSL- und SSH-Verschlüsselung zur Datenübertragung
14. Lernen Sie, die Tools tcpdump und strings zu verwenden, um die Sicherheit übertragener Daten zu überprüfen. Zum Beispiel tcpdump -l -i eth0 -w -src oder dst port 3306 strings. Starten Sie den MySQL-Datenbankdienst als normaler Benutzer.
15. Verwenden Sie nicht das Linksymbol der Tabelle. Wählen Sie den Parameter --skip-symbolic-links. 16. Stellen Sie sicher, dass Nur der Benutzer, der den Datenbankdienst startet, kann Lese- und Schreibberechtigungen für die Datei haben.
17. Prozess- oder Superberechtigungen dürfen nicht an nicht-administrative Benutzer vergeben werden der aktuell ausgeführte Abfragetext; Super-Berechtigungen. Er kann verwendet werden, um Client-Verbindungen zu unterbrechen, den Betriebsparameterstatus des Servers zu ändern und Server zu steuern, die Datenbanken kopieren und replizieren. 18. Dateiberechtigungen werden anderen Benutzern nicht gewährt Administratoren können verhindern, dass beim Laden von Daten „/etc/passwd“ Probleme auftreten, indem Sie in der Tabelle auswählen
19. Wenn Sie den Diensten des DNS-Dienstleisters nicht vertrauen, können Sie nur die IP festlegen numerische Adresse in der Hostnamen-Berechtigungstabelle;
20. Verwenden Sie max_user_connections-Variablen, um den mysqld-Dienstprozess zu aktivieren, um die Anzahl der Verbindungen für ein bestimmtes Konto zu begrenzen.
21. Die Grant-Anweisung unterstützt auch Ressourcenkontrolloptionen;
22. Starten Sie den Sicherheitsoptionsschalter des mysqld-Dienstprozesses, -- local-infile=0 oder 1. Wenn er 0 ist, kann das Client-Programm keine lokalen Ladedaten verwenden grant grant insert(user) on mysql.user to 'user_name'@'host_name'; wenn Sie --skip- verwenden. Das Grant-Tables-System implementiert keine Zugriffskontrolle für den Zugriff eines Benutzers, Sie können jedoch mysqladmin-flush-privileges oder verwenden mysqladmin reload, um die Zugriffskontrolle zu aktivieren; standardmäßig ist die show Databases-Anweisung für alle Benutzer geöffnet, und Sie können --skip-show-databases zum Schließen verwenden.
23. Wenn Fehler 1045 (28000) Zugriff verweigert für Benutzer „root“@„localhost“ auftritt (Passwort wird verwendet: NEIN), müssen Sie das Passwort zurücksetzen. Die spezifische Methode ist: Verwenden Sie zuerst --skip Starten Sie mysqld mit dem Parameter -grant-tables, führen Sie dann mysql -u root mysql,mysql>update user set password=password('newpassword') where user='root';mysql>Flushprivilegien; aus und starten Sie schließlich mysql neu.
Das Obige ist der Inhalt der MySQL-Sicherheitsvorkehrungen. Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www.php.cn)!