ฉันจะติดตั้ง MySQL โดยไม่ต้องใส่รหัสผ่านได้อย่างไร


26

ฉันพยายามติดตั้ง MySQL บน Ubuntu Natty โดยไม่ต้องใส่รหัสผ่าน อย่างไรก็ตามฉันได้รับพร้อมท์ให้ใส่รหัสผ่านในบางช่วงหลังจากการติดตั้งหลัก

นอกจากนี้เมื่อฉันป้อนสิ่งที่ฉันเชื่อว่าควรเป็นรหัสผ่านของฉัน (mymysqlpass) มันทำให้ฉันมีการปฏิเสธการแจ้งเตือนการเข้าถึง จากนั้นเมื่อสคริปต์สิ้นสุดลงฉันสามารถลงชื่อเข้าใช้ mysql ได้โดยไม่ต้องใช้รหัสผ่านเช่น mysql -uroot ซึ่งไม่ควรเกิดขึ้น

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

ฉันจะเป็นอันตรายมาก! คุณต้องการสิ่งนี้หรือไม่
Pascal Fares

6
เมื่อคุณจัดเตรียมเครื่องเสมือนสำหรับสิ่งหนึ่ง หากคุณเป็นห่วงฉันแน่ใจว่าคุณสามารถทำอะไรบางอย่างเช่นสร้างรหัสผ่านแบบเข้ารหัสลับที่ปลอดภัยและให้สคริปต์สร้างงาน cron เพื่อบอกรหัสผ่านกับคุณเมื่อมีปริมาณการใช้งานน้อยและมีระบบ airgapped ที่ เวลา. เพียงให้แน่ใจว่าคุณกำลังดูคอมพิวเตอร์ในช่วง 5 วินาทีที่คุณให้คอมพิวเตอร์ก่อนที่มันจะหายไป
trysis

OP กล่าวว่า "ฉันได้รับพร้อมท์เพื่อรหัสผ่าน" แต่ในตัวอย่างรหัสของเขาเรามี 2 บรรทัดเริ่มต้นdebconf-set-selectionsซึ่งจะหลีกเลี่ยงปัญหานั้น downvote เพราะฉันเชื่อว่าคำถามและตัวอย่างโค้ดได้รับการแก้ไขที่จุดต่าง ๆ สองจุดในเวลานี้ คำถามไม่สมเหตุสมผลอีกต่อไป
mastazi

คำตอบ:


46

คำสั่งต่อไปนี้ตั้งค่ารหัสผ่าน root ของ MySQL เป็นstrangehatเมื่อคุณติดตั้งmysql-serverแพ็คเกจ

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

โปรดทราบว่าสิ่งนี้จะสร้างสำเนารหัสผ่านของคุณใน cleartext /var/cache/debconf/passwords.dat(ซึ่งโดยปกติจะสามารถอ่านได้โดย root เท่านั้นและรหัสผ่านจะถูกลบโดยระบบการจัดการบรรจุภัณฑ์หลังจากการติดตั้งmysql-serverแพคเกจสำเร็จ)

ตรวจสอบให้แน่ใจว่าใช้เครื่องหมายคำพูดหากใช้ใน Dockerfile

ตอนนี้คุณสามารถติดตั้งได้mysql-serverและไม่ปรากฏพรอมต์รหัสผ่าน:

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

นี้จะติดตั้ง mysql โดยไม่มีการแทรกแซงใด ๆ


7

การดำเนินการนี้อาจทำให้ไม่พร้อมท์คุณ:

export DEBIAN_FRONTEND=noninteractive

สำหรับสคริปต์ฉันลองใส่รหัสผ่านในเครื่องหมายคำพูด:

mysql_pass="mymysqlpass"

1

ส่วนนี้ต้องการการใช้ถ้อยคำใหม่หากคุณต้องการใส่รหัสผ่านระหว่างเครื่องหมายคำพูด: 'mysql-server-5.1 mysql-server / root_password password' $ mysql_pass ''

ไปที่:

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

สิ่งนี้ใช้ได้สำหรับฉัน (รหัสผ่าน root ที่ว่างเปล่า):

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.