MySQL-Datenbank und Benutzer ohne Passwort erstellen

MySQL-Datenbank und Benutzer ohne Passwort erstellen

Ich erstelle eine Reihe von Bash-Skripten, die im Wesentlichen virtuelle Apache-Hosts, Git-Repositorys und andere Dinge auf einem Cloud-Server vorbereiten. Soweit so gut, alles funktioniert, aber ein großes Problem ist aufgetreten:MySQL-Datenbank und Benutzererstellung.

Die aktuellen Skripte verwenden SSH mit Schlüsseln zur Authentifizierung beim Cloud-Server und jeder aus meinem Team kann Befehle ausführen. Ich möchte das so beibehalten und ihnen irgendwie ermöglichen, neue MySQL-Datenbanken und -Benutzer zu erstellen, ohne sich als Root oder ein anderer Benutzer mit hohen Berechtigungen bei MySQL anmelden zu müssen, aber ich habe keine Lösung dafür.

Idee Nr. 1besteht darin, einen neuen MySQL-Benutzer ohne Kennwort zu erstellen und ihm volle Rechte (wie root) zu geben, ihn aber nur nutzbar zu machen @'localhost'.

Idee Nr. 2besteht darin, das Kennwort für diesen MySQL-Kontrollbenutzer in einer Datei zu speichern und es nur dem aktuellen SSH-Benutzer zugänglich zu machen, den die anderen Skripte verwenden. Anschließend verwendet die MySQL-Anmeldung dieses gespeicherte Kennwort, um sich anzumelden und die Datenbank und den Benutzer zu erstellen.

Ich weiß nicht, welche Option besser ist, und ich weiß, dass sie gefährlich sind. Ich bitte um Meinungen und bessere Ideen.

Antwort1

Sie möchten, dass der Unix-Benutzer und der MySQL-Benutzer Ihres Teams möglichst wenig Zugriffsrechte haben, ihnen aber trotzdem erlauben, das zu tun, was Sie möchten. Es scheint, als ob beide Ihrer Ideen mehr Zugriffsrechte als nötig erlauben. Besser für den MySQL-Benutzer des Teams:

  1. haben nur CREATE-Zugriff oder nur den Zugriff, den sie benötigen (beschränkt die Möglichkeiten Ihres Teams auf ein Minimum). Sie erteilen einem MySQL-Benutzer Zugriff mithilfe der GRANT-Anweisung.
  2. Benutzername/Passwort in ~/my.cnfeiner Datei speichern, auf die nur der Eigentümer Lesezugriff hat (schränkt Ihr Team nicht mehr ein, verhindert aber, dass andere die Anmeldung sehen, wenn sie das Skript sehen).

Das oben Genannte ist einfach umzusetzen und stellt eine große Verbesserung dar.

Eine bessere Idee, aber mit mehr Arbeit verbunden, wäre, dem Teambenutzer keinen Zugriff zum Erstellen von Datenbanken zu gewähren, sondern nur Anfragen zum Einrichten von Websites in eine Warteschlange zu stellen, die dann von einem anderen Benutzerskript, das nur Sie steuern (und das nur den erforderlichen Zugriff hat), regelmäßig verarbeitet werden, um die Websites einzurichten. Die Warteschlange könnte eine Datei sein, bei der jede Zeile eine Anfrage darstellt, ein Verzeichnis, bei dem jede Datei eine Anfrage darstellt, oder eine Datenbanktabelle, bei der jeder Datensatz eine Anfrage darstellt. Es hängt davon ab, wie stark Sie Ihr System absichern möchten.

Im Allgemeinen sollten Sie Unix- und MySQL-Benutzer verwenden, die nicht so viel Zugriff haben wie Root. Ich erstelle einen funktionierenden MySQL-Benutzer für mich selbst, der Datenbanken erstellen und löschen und nur die Vorgänge ausführen kann, die ich regelmäßig verwende. Ich verwende Root oder einen Benutzer mit ähnlichen Berechtigungen nur, wenn ich einen anderen Benutzer einrichten muss, um ihm Zugriffsrechte zu erteilen. In einem Skript schränke ich den Benutzer so weit wie möglich ein, um den Schaden zu begrenzen, wenn etwas schief geht.

verwandte Informationen