Bagaimana cara saya menginstal MySQL tanpa prompt kata sandi?

26

Saya mencoba menginstal MySQL di Ubuntu Natty tanpa kata sandi. Namun, saya terus dimintai kata sandi pada tahap tertentu setelah instalasi utama.

Juga, ketika saya memasukkan apa yang saya yakini sebagai kata sandi saya (mymysqlpass), itu memberi saya pemberitahuan ditolak akses. Kemudian ketika skrip berakhir, saya bisa login ke mysql tanpa kata sandi yaitu mysql -uroot, yang seharusnya tidak terjadi.

#!/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
sumber
Saya akan sangat berbahaya! apa yang kamu butuhkan ini?
Pascal
6
Ketika Anda menyediakan mesin virtual, untuk satu hal. Jika Anda benar-benar khawatir, saya yakin Anda dapat melakukan sesuatu seperti membuat kata sandi yang aman secara cryptographically aman dan membuat skrip membuat tugas cron untuk memberi tahu Anda kata sandi pada saat ada sedikit lalu lintas dan memiliki sistem airgapped pada saat itu waktu. Pastikan Anda melihat komputer selama 5 detik yang Anda berikan sebelum menghilang.
trysis
OP mengatakan "Saya terus dimintai kata sandi" tetapi dalam kode contohnya kita memiliki 2 baris debconf-set-selectionsyang akan menghindari itu, diturunkan karena saya percaya pertanyaan dan kode sampel diedit pada dua titik waktu dan sekarang pertanyaan tidak masuk akal lagi.
mastazi

Jawaban:

46

Perintah-perintah berikut mengatur kata sandi root MySQL strangehatketika Anda menginstal mysql-serverpaket.

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

Perhatikan bahwa ini akan membuat salinan kata sandi Anda di teks bagian /var/cache/debconf/passwords.dat(yang biasanya hanya dapat dibaca oleh root dan kata sandi akan dihapus oleh sistem manajemen paket setelah instalasi yang berhasil dari mysql-serverpaket).

Pastikan untuk menggunakan kutipan jika menggunakannya di Dockerfile.

Sekarang Anda dapat menginstal mysql-serverdan prompt kata sandi tidak muncul:

sudo apt-get install mysql-server
Nimmermehr
sumber
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

ini akan menginstal mysql tanpa intervensi apa pun

lilbro1062000
sumber
7

Ini mungkin berhasil untuk membuatnya tidak meminta Anda:

export DEBIAN_FRONTEND=noninteractive

Adapun skrip, saya akan mencoba memasukkan kata sandi dalam tanda kutip:

mysql_pass="mymysqlpass"
Gustav Bertram
sumber
1

Bagian ini perlu diulang ulang jika Anda ingin memasukkan kata sandi di antara tanda kutip: 'mysql-server-5.1 mysql-server / root_password kata sandi' $ mysql_pass ''

Untuk:

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

Ini berfungsi untuk saya (kata sandi root kosong):

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
pengguna219207
sumber