Hier erfahren Sie, wie Sie einen öffentlichen Benutzer in MySQL erstellen, der ein Kennwort benötigt, um eine Datenbank anzuzeigen, sowie Erklärungen und Best Practices:
1. Stellen Sie eine Verbindung zu MySQL als Root oder als Administrator -Benutzer her
Sie müssen eine Verbindung zu Ihrem MySQL -Server mit einem Benutzerkonto mit ausreichenden Berechtigungen herstellen, um Benutzer zu erstellen und Berechtigungen zu erfüllen. In der Regel handelt es sich um den `root` -Benutzer oder einen anderen administrativen Benutzer.
`` `bash
Mysql -u root -p
`` `
Geben Sie das Stammkennwort ein, wenn Sie aufgefordert werden.
2. Erstellen Sie den Benutzer
Verwenden Sie die Anweisung "Create User", um den Benutzer zu erstellen. Es ist die beste Praxis, den Host anzugeben, aus dem der Benutzer eine Verbindung herstellen kann. Wenn Sie möchten, dass der Benutzer von einem Host eine Verbindung herstellt, verwenden Sie `%`. sehr vorsichtig mit der Verwendung von `%` für sensible Konten! Beschränken Sie den Benutzer, um einen sichereren Ansatz zu erhalten, nur mit bestimmten IP -Adressen oder Hostnamen herzustellen.
`` `SQL
Erstellen Sie den Benutzer 'public_user'@'%' durch 'your_strong_password' identifiziert;
`` `
* `'public_user'@'%'` :Dies definiert den Benutzernamen (`public_user`) und den Host (`%`bedeutet einen Host). Ersetzen Sie `your_strong_password` durch ein starkes, eindeutiges Passwort.
* `identifiziert durch 'your_strong_password'` :Dies legt das Kennwort für den Benutzer fest. Verwenden Sie ein starkes Passwort, das lang, komplex ist und eine Mischung aus Groß- und Kleinbuchstaben, Zahlen und Symbolen enthält. Erwägen Sie, einen Passwort -Manager zu verwenden, um Ihre Passwörter sicher zu generieren und zu speichern.
Wichtiger Sicherheitsnotiz: Verwenden Sie "%" "%" "Da der Host dem Benutzer es ermöglicht, sich von * jeder * IP -Adresse zu verbinden. Dies kann ein Sicherheitsrisiko sein. Wenn möglich, beschränken Sie den Benutzer auf eine bestimmte IP -Adresse oder einen bestimmten Bereich von IP -Adressen. Zum Beispiel:
`` `SQL
Erstellen Sie den Benutzer 'public_user'@'192.168.1.100' identifiziert von 'your_strong_password'; - Erlauben Sie nur von IP 192.168.1.100
Benutzer "public_user "@'192.168.1.1 'identifiziert durch' your_strong_password '; - Erlauben Sie aus Subnetz 192.168.1.x
`` `
3. Gewähren Sie die Datenbank schreibgeschützte Berechtigungen
Verwenden Sie die Anweisung "Grant", um dem Benutzer schreibgeschützte Berechtigungen in der gewünschten Datenbank zu gewähren.
`` `SQL
Grant Select Select on Your_database.* An 'public_user'@'%';
`` `
* `Grant Select` :Dies gibt an, dass der Benutzer nur über das SELECT "-Regileg verfügt, mit dem er Daten lesen kann. Sie können die Struktur der Datenbank einfügen, aktualisieren, löschen oder ändern.
* `auf your_database.*` :Dies gibt die Datenbank an (`your_database`) und dass das Privileg für alle Tabellen in dieser Datenbank (`.*`) Gilt. Ersetzen Sie `your_database` durch den tatsächlichen Namen Ihrer Datenbank.
* `to 'public_user'@'%'` :Dies gibt den Benutzer an, dem das Privileg gewährt wird. Stellen Sie sicher, dass dies dem Benutzer entspricht, den Sie in Schritt 2 erstellt haben.
4. Flush -Privilegien
Nach der Gewährung von Privilegien ist es wichtig, die Berechtigungstische zu spülen, um sicherzustellen, dass die Änderungen sofort wirksam werden.
`` `SQL
Spülung Privilegien;
`` `
5. Testen Sie den Benutzer
Melden Sie sich aus dem Root- oder Admin -Konto an und melden Sie sich mit dem neu erstellten `public_user` -Konto an.
`` `bash
mysql -u public_user -p -h your_mysql_server_address
`` `
Ersetzen Sie `your_mysql_server_address` durch die tatsächliche Adresse Ihres MySQL -Servers. Wenn Sie sich von derselben Maschine anschließen, können Sie häufig "Localhost" verwenden.
Geben Sie das Passwort ein, das Sie für `public_user` festgelegt haben, wenn Sie aufgefordert werden.
Versuchen Sie nach dem Anmelden, Daten aus der Datenbank auszuwählen:
`` `SQL
Verwenden Sie Ihre_database;
Wählen Sie * aus Your_table;
`` `
Wenn die Anweisung "select" funktioniert, wurde dem Benutzer schreibgeschützte Zugriff gewährt. Versuchen Sie eine Operation, die andere Berechtigungen erfordert, wie z. Diese sollten mit einem Fehler "Erlaubnis abgelehnt" fehlschlagen.
Vollständiges Beispiel:
`` `SQL
-Verbinden Sie als Root:Mysql -u root -p
- Erstellen Sie den Benutzer (ersetzen Sie durch ein starkes Passwort!)
Erstellen Sie den Benutzer 'public_user'@'%', der durch 'SuperSecretpassword123!' Identifiziert wurde;
-Gewähren Sie schreibgeschützte Zugriff auf die "mydatabase" -Datenbank
Grant Select Select on MyDatabase.* An 'public_user'@'%';
- Privilegien aktualisieren
Spülung Privilegien;
- Beenden Sie die Stammsitzung
AUSFAHRT;
- Melden Sie sich als neuer Benutzer an (aus der Befehlszeile):
-MySQL -U public_user -p -h your_mysql_server_address
- Testen Sie die Berechtigungen:
Benutze mydatabase;
Wählen Sie * von Kunden aus; - sollte funktionieren
In Kunden einfügen (Name) Werte ('neuer Kunde'); - sollte scheitern
- Beenden Sie die Sitzung der öffentlichen_user
AUSFAHRT;
`` `
Wichtige Überlegungen und Best Practices:
* am wenigsten Privilegien: Gewähren Sie nur die notwendigen Privilegien. Vermeiden Sie es, breitere Privilegien zu gewähren als erforderlich. Wenn der Benutzer beispielsweise nur aus einer bestimmten Tabelle lesen muss, gewähren Sie `select` nur in dieser Tabelle, nicht in der gesamten Datenbank.
* Hostbeschränkung: Beschränken Sie die Hosts, aus denen der Benutzer eine Verbindung herstellen kann. Verwenden Sie nicht "%", es sei denn, Sie sind unbedingt erforderlich und Sie verstehen die Sicherheitsauswirkungen.
* Kennwortverwaltung: Erzwingen Sie starke Kennwortrichtlinien und drehen Sie regelmäßig Passwörter. Verwenden Sie einen Passwort -Manager.
* Prüfprotokollierung: Aktivieren Sie die Protokollierung von Audit auf Ihrem MySQL -Server, um die Benutzeraktivität zu verfolgen, einschließlich Anmeldungen, Abfragen und anderen Vorgängen. Dies kann Ihnen helfen, Sicherheitsvorfälle zu erkennen und zu untersuchen.
* reguläre Sicherheitsdienste: Überprüfen Sie regelmäßig Ihre MySQL -Konfiguration, Benutzerkonten und Berechtigungen, um potenzielle Sicherheitsanfälligkeiten zu identifizieren und zu beheben.
* Verschlüsselung: Verwenden Sie die Verschlüsselung, um die Daten im Ruhezustand und beim Transport zu schützen. Aktivieren Sie SSL für Client -Verbindungen.
* Firewall: Konfigurieren Sie Ihre Firewall, um nur den erforderlichen Datenverkehr auf Ihren MySQL -Server zu ermöglichen.
* Überwachung: Überwachen Sie Ihren MySQL -Server auf Leistungsprobleme und Sicherheitsbedrohungen.
* Datenbankdesign: Entwerfen Sie Ihre Datenbank mit Blick auf die Sicherheit. Verwenden Sie geeignete Datentypen und Einschränkungen, um die Beschädigung von Daten und Injektionsangriffen zu verhindern. Erwägen Sie, vorbereitete Aussagen zu verwenden, um die SQL -Injektion zu verhindern.
* Vermeiden Sie es direkt, dem Internet auszusetzen: In den meisten Fällen sollten Sie Ihre MySQL -Datenbank nicht direkt dem öffentlichen Internet aussetzen. Verwenden Sie stattdessen einen Anwendungsserver (z. B. einen Webserver, der PHP, Python, Node.js usw.), um Anforderungen von Clients zu bearbeiten und im Auftrag des Benutzers mit der Datenbank zu interagieren. Auf diese Weise können Sie strengere Sicherheitskontrollen implementieren und die Datenbank vor direkten Angriffen schützen. Dies ist entscheidend, um unbefugten Zugriffs- und Datenverletzungen zu verhindern.
* Keine direkte Exposition gegenüber dem Endbenutzer: Lassen Sie den Endbenutzer niemals direkt in Ihre Datenbank eingeben, sondern verwenden Sie eine Website.
Wenn Sie diese Schritte und Best Practices befolgen, können Sie einen öffentlichen Benutzer erstellen, der ein Kennwort benötigt, um Daten in MySQL anzuzeigen und gleichzeitig ein angemessenes Sicherheitsniveau beizubehalten. Denken Sie daran, diese Anweisungen an Ihre spezifischen Umgebungs- und Sicherheitsanforderungen anzupassen. Priorisieren Sie immer die Sicherheit und überprüfen Sie Ihre Konfiguration regelmäßig, um sicherzustellen, dass sie effektiv bleibt.