Ich schreibe ein Skript, in dem ich das mysql_secure_installation
Skript starten und an jeder Eingabeaufforderung die entsprechenden Antworten geben möchte . Ich habe versucht, Echo wie folgt zu verwenden:
echo -e "\n\n$db_pass\n$db_pass\n\n\n\n\n" | /usr/bin/mysql_secure_installation
Es funktioniert nicht vollständig. Es scheint, dass es die letzten 5 Fragen richtig beantwortet, aber die ersten 3 nicht richtig beantwortet (dies befindet sich auf einer CentOS 6.5
Box). Hier ist die Ausgabe:
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
stty: standard input: Invalid argument
Enter current password for root (enter for none):
stty: standard input: Invalid argument
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
Set root password? [Y/n] ... skipping.
Es sollte eine Rücksendung senden, wenn Sie nach dem Root-Passwort gefragt werden. Dann sollte es eine weitere Rückgabe senden, wenn Sie aufgefordert werden, das Root-Passwort festzulegen. Wie Sie jedoch an der Ausgabe sehen können, geschieht dies nicht.
Was muss ich tun, damit dies wie erwartet funktioniert?
Antworten:
Dieser Fehlerbericht auf der MySQL-Dev-Site behebt das Problem,
mysql_secure_installation
dass eine interaktive Benutzersitzung erforderlich ist.Dort gibt es einige gute Diskussionen mit Tipps und Beispielen, die
expect
als Problemumgehung dienen. Der beste Rat, der Ihren Wunsch zu erfüllen scheint, das Skript nicht interaktiv auszuführen (dh ohne direkte Benutzerinteraktion), ist die Antwort von Daniël van Eeden, die das folgendeexpect
Skript bereitstellt :Außerdem scheint das übergeordnete Problem von Basis-MySQL-Installationen mit nicht sicherem Material in MySQL 5.6.8 behoben zu sein, jedoch nur für Neuinstallationen über RPMs oder Quellcode-Installationen, die mit der
--random-password
Option durchgeführt werden:quelle
expect
Skript, keinbash
Skript.Das kannst du nicht machen. Wenn Sie mit einem Skript interagieren möchten, müssen Sie etwas wie " Erwarten" (1) verwenden - es gibt Beispiele hier auf SF und im breiteren Internet, wie dies zu tun ist.
Sie können einen Großteil der mysql_secure_Installation mit emulieren
Danach müssen Sie nur noch ein Root-Passwort festlegen.
quelle