Wie installiere ich MySQL ohne Passwortabfrage?

26

Ich versuche MySQL unter Ubuntu Natty ohne Passwortabfrage zu installieren. Nach der Hauptinstallation werde ich jedoch immer wieder zur Eingabe eines Kennworts aufgefordert.

Wenn ich mein Passwort (mymysqlpass) eingebe, wird mir der Zugriff verweigert. Wenn das Skript dann beendet wird, kann ich mich ohne Passwort bei mysql anmelden, dh mysql -uroot, was nicht passieren sollte.

#!/bin/bash
#This script installs mysql (latest build)
#Install MYSQL Server
mysql_pass=mymysqlpass
export DEBIAN_FRONTEND=noninteractive 
debconf-set-selections <<< 'mysql-server-5.1 mysql-server/root_password password '$mysql_pass''
debconf-set-selections <<< 'mysql-server-5.1 mysql-server/root_password_again password '$mysql_pass''
apt-get -y install mysql-server
#Configure Password and Settings for Remote Access
cp /etc/mysql/my.cnf /etc/mysql/my.bak.cnf
ip=`ifconfig eth0 | grep "inet addr"| cut -d ":" -f2 | cut -d " " -f1` ; sed -i "s/\(bind-address[\t ]*\)=.*/\1= $ip/" /etc/mysql/my.cnf
mysql -uroot -e "UPDATE mysql.user SET Password=PASSWORD('"$mysql_pass"') WHERE User='root'; FLUSH PRIVILEGES;"
sleep 10
mysql -uroot -p$mysql_pass -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '"$mysql_pass"'; FLUSH PRIVILEGES;"
#Restart
service mysql restart
echo "MySQL Installation and Configuration is Complete."
Chuck Ugwuh
quelle
Ich wäre sehr gefährlich! Warum brauchst du das?
Pascal Fares
6
Zum einen, wenn Sie virtuelle Maschinen bereitstellen. Wenn Sie sich wirklich Sorgen machen, können Sie sicher ein zufälliges, kryptografisch sicheres Kennwort erstellen und das Skript einen Cron-Job erstellen lassen, der Ihnen das Kennwort zu einem Zeitpunkt mit wenig Datenverkehr mitteilt, an dem das System eine Luftspalte aufweist Zeit. Stellen Sie sicher, dass Sie den Computer während der 5 Sekunden betrachten, die Sie ihm geben, bevor er verschwindet.
Trysis
Das OP sagt "Ich werde immer wieder zur debconf-set-selectionsEingabe eines Passworts aufgefordert", aber in seinem Beispielcode haben wir die 2 Zeilen , die damit anfangen, da ich glaube, dass die Frage und der Beispielcode zu zwei verschiedenen Zeitpunkten bearbeitet wurden Frage ergibt keinen Sinn mehr.
Mastazi

Antworten:

46

Die folgenden Befehle setzen das MySQL-Root-Passwort auf, strangehatwenn Sie das mysql-serverPaket installieren .

echo "mysql-server mysql-server/root_password password strangehat" | sudo debconf-set-selections
echo "mysql-server mysql-server/root_password_again password strangehat" | sudo debconf-set-selections

Beachten Sie, dass hierdurch eine Klartextkopie Ihres Kennworts erstellt wird /var/cache/debconf/passwords.dat(das normalerweise nur von root gelesen werden kann und das vom Paketverwaltungssystem nach der erfolgreichen Installation des mysql-serverPakets gelöscht wird ).

Stellen Sie sicher, dass Sie Anführungszeichen verwenden, wenn Sie es in Dockerfile verwenden.

Jetzt können Sie installieren mysql-serverund die Passwortabfrage wird nicht angezeigt:

sudo apt-get install mysql-server
Nimmermehr
quelle
11
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password my_password'
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password my_password'
sudo apt-get -y install mysql-server

Dadurch wird MySQL ohne Intervention installiert

lilbro1062000
quelle
7

Dies könnte funktionieren, damit Sie nicht dazu aufgefordert werden:

export DEBIAN_FRONTEND=noninteractive

Was das Skript angeht, würde ich versuchen, das Passwort in Anführungszeichen zu setzen:

mysql_pass="mymysqlpass"
Gustav Bertram
quelle
1

Dieser Teil benötigt eine Umformulierung, wenn Sie das Passwort in Anführungszeichen setzen möchten: 'mysql-server-5.1 mysql-server / root_password password' $ mysql_pass ''

Zu:

"mysql-server-5.1 mysql-server/root_password password '$mysql_pass'"

Das hat bei mir geklappt (leeres root Passwort):

sudo debconf-set-selections <<< "mysql-server-5.5 mysql-server/root_password password ''"
sudo debconf-set-selections <<< "mysql-server-5.5 mysql-server/root_password_again password ''"
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password ''"
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password ''"
export DEBIAN_FRONTEND=noninteractive
sudo -E apt-get install -y -q mysql-server libmysqlclient-dev
user219207
quelle