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


305

ฉันจะเขียนสคริปต์เพื่อติดตั้งเซิร์ฟเวอร์ MySQL บน Ubuntu ได้อย่างไร

sudo apt-get install mysql จะติดตั้ง แต่จะขอให้ใส่รหัสผ่านในคอนโซล

ฉันจะทำสิ่งนี้ในลักษณะที่ไม่โต้ตอบได้อย่างไร นั่นคือเขียนสคริปต์ที่สามารถให้รหัสผ่านได้หรือไม่

#!/bin/bash
sudo apt-get install mysql  # To install MySQL server

# How to write script for assigning password to MySQL root user
# End

คำตอบ:


431
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password your_password'
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password your_password'
sudo apt-get -y install mysql-server

สำหรับรุ่นเฉพาะเช่นmysql-server-5.6คุณจะต้องระบุรุ่นในลักษณะนี้:

sudo debconf-set-selections <<< 'mysql-server-5.6 mysql-server/root_password password your_password'
sudo debconf-set-selections <<< 'mysql-server-5.6 mysql-server/root_password_again password your_password'
sudo apt-get -y install mysql-server-5.6

สำหรับ mysql-community-server คีย์จะแตกต่างกันเล็กน้อย:

sudo debconf-set-selections <<< 'mysql-community-server mysql-community-server/root-pass password your_password'
sudo debconf-set-selections <<< 'mysql-community-server mysql-community-server/re-root-pass password your_password'
sudo apt-get -y install mysql-community-server

แทนที่ your_password ด้วยรหัสผ่านรูทที่ต้องการ (ดูเหมือนว่า your_password ยังสามารถเว้นว่างไว้สำหรับรหัสผ่านรูทว่างได้)

หากเชลล์ของคุณไม่รองรับhere-strings ( zsh , ksh93และbashรองรับพวกมัน) ให้ใช้:

echo ... | sudo debconf-set-selections 

1
ให้แน่ใจว่าได้เปลี่ยนชิ้นmysql-server-5.1ส่วนเป็นเวอร์ชั่น mysql ปัจจุบัน!
Dean Rather

19
คำตอบนี้แปลเป็น MariaDB ดังต่อไปนี้โดยการแทนที่ด้วยmysql-server-<version> maria-db-<server>การเกิดขึ้นของmysql-server/ ซาก
Lukx

5
- <version> ส่วนไม่จำเป็น - ทำงานเหมือนมีเสน่ห์สำหรับฉันและเป็นสิ่งที่ธรรมดากว่าถ้าไม่มี
msztolcman

2
ใช้งานได้ดีหลังจากsudo apt-get install debconf-utils
Nazin

4
@Lukx สำหรับ MariaDB แพคเกจคือ mariadb-server ไม่ใช่ maria-db-server ขอบคุณสำหรับการบันทึกต่อไป
ywarnier

238

สิ่งนี้ควรทำเคล็ดลับ

export DEBIAN_FRONTEND=noninteractive
sudo -E apt-get -q -y install mysql-server

แน่นอนว่าจะปล่อยให้คุณใช้รหัสผ่านรูทว่างดังนั้นคุณจึงต้องการเรียกใช้บางอย่าง

mysqladmin -u root password mysecretpasswordgoeshere

หลังจากนั้นเพื่อเพิ่มรหัสผ่านไปยังบัญชี


3
ผ่านการทดสอบและทำงานในอินสแตนซ์ Ubuntu 12.04 ใหม่พร้อม MySQL 5.5
Alberto Megía

21
หากคุณกำลังติดตั้งด้วย sudo ให้ใช้ -E เพื่อให้ตัวแปรสภาพแวดล้อมถูกส่งผ่าน เช่น. sudo -E apt-get -q -y ติดตั้ง mysql-server
Patrick Cullen

35
นอกจากนี้คุณยังสามารถเพิ่มตัวแปร env ลงในคำสั่งโดยตรง (โดยไม่ก่อให้เกิดมลภาวะภายนอก) โดยเตรียมมัน -DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server
yoniLavi

2
รหัสผ่าน mysql จะถูกเก็บไว้ในบันทึกการทุบตีเมื่อทำเช่นนี้
DutGRIFF

3
ทำงานกับฉันใน Debian 8.2 - ฉันรวมจาก @PatrickCullen และ @yoniLavi เพื่อรับ - DEBIAN_FRONTEND=noninteractive sudo -E apt-get -q -y install mysql-serverทำงานเหมือนมีเสน่ห์!
MuffinTheMan

31

อีกวิธีในการทำให้ใช้งานได้:

echo "mysql-server-5.5 mysql-server/root_password password root" | debconf-set-selections
echo "mysql-server-5.5 mysql-server/root_password_again password root" | debconf-set-selections
apt-get -y install mysql-server-5.5

โปรดทราบว่านี่เป็นการตั้งรหัสผ่านเป็น "รูท" ฉันไม่สามารถตั้งรหัสผ่านเปล่าโดยใช้เครื่องหมายคำพูดง่าย ๆ''แต่วิธีนี้ก็เพียงพอแล้วสำหรับฉัน

ขึ้นอยู่กับวิธีการแก้ปัญหาที่นี่


1
echo 'mysql-server-5.5 รหัสผ่าน mysql-server / root_password' | sudo debconf-set-selectionsทำงานเพื่อระบุรหัสผ่านเปล่าสำหรับฉัน
Tsuneo Yoshioka

4
@TuneuneYoshioka ไม่ได้ผลสำหรับฉัน ถ้าฉันใส่ช่องว่างสองช่องที่ส่วนท้ายมันจะตั้งรหัสผ่านของฉันเป็นช่องว่างเดียว ด้วยที่ว่างเพียงช่องเดียวมันยังคงพยายามให้พรอมต์จากนั้นขันสกรูขึ้นการติดตั้ง
mpen

3

ใช้:

sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server

sudo mysql -h127.0.0.1 -P3306 -uroot -e"UPDATE mysql.user SET password = PASSWORD('yourpassword') WHERE user = 'root'"

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