Jak zainstalować MySQL bez pytania o hasło?


26

Próbuję zainstalować MySQL na Ubuntu Natty bez pytania o hasło. Jednak wciąż pojawia się monit o hasło na pewnym etapie po głównej instalacji.

Ponadto, gdy wprowadzę hasło, które moim zdaniem powinno być moim hasłem (mymysqlpass), otrzymam powiadomienie o odmowie dostępu. Następnie, gdy skrypt zakończy działanie, mogę zalogować się do mysql bez hasła, tj. Mysql -uroot, co nie powinno się zdarzyć.

#!/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."

Byłbym bardzo niebezpieczny! czego potrzebujesz?
Pascal Fares

6
Po pierwsze, podczas udostępniania maszyn wirtualnych. Jeśli naprawdę się martwisz, jestem pewien, że możesz zrobić coś takiego, jak utworzyć losowo bezpieczne hasło kryptograficzne i pozwolić skryptowi utworzyć zadanie CRON, aby podać ci hasło w czasie, gdy ruch jest niewielki, a system nie działa. czas. Tylko upewnij się, że patrzysz na komputer przez 5 sekund, które mu dasz, zanim zniknie.
trysis

OP mówi: „Ciągle pojawia się monit o hasło”, ale w jego przykładowym kodzie mamy 2 wiersze, od debconf-set-selectionsktórych tego unikniemy, odrzucone, ponieważ uważam, że pytanie i przykładowy kod były edytowane w dwóch różnych momentach, a teraz pytanie nie ma już sensu.
mastazi

Odpowiedzi:


46

Następujące polecenia ustawiają hasło root MySQL na strangehatpodczas instalowania mysql-serverpakietu.

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

Zauważ, że tworzy to kopię tekstu hasła w postaci jawnego tekstu /var/cache/debconf/passwords.dat(która zwykle jest możliwa do odczytania tylko przez root, a hasło zostanie usunięte przez system zarządzania pakietami po pomyślnej instalacji mysql-serverpakietu).

Pamiętaj, aby używać cudzysłowów, jeśli używasz go w Dockerfile.

Teraz możesz zainstalować, mysql-servera monit o hasło nie pojawia się:

sudo apt-get install mysql-server

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

spowoduje to zainstalowanie mysql bez żadnej interwencji


7

Może to działać, aby nie wyświetlać monitu:

export DEBIAN_FRONTEND=noninteractive

Jeśli chodzi o skrypt, spróbuję wpisać hasło w cudzysłowie:

mysql_pass="mymysqlpass"

1

Ta część wymaga przeformułowania, jeśli chcesz umieścić hasło między cudzysłowami: „mysql-server-5.1 mysql-server / root_password hasło„ $ mysql_pass ””

Do:

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

To zadziałało dla mnie (puste hasło roota):

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.