Cài đặt MySQL trên Ubuntu mà không cần nhắc mật khẩu


305

Làm cách nào để viết tập lệnh cài đặt máy chủ MySQL trên Ubuntu?

sudo apt-get install mysql sẽ cài đặt, nhưng nó cũng sẽ yêu cầu nhập mật khẩu trong bàn điều khiển.

Làm thế nào để tôi làm điều này theo cách không tương tác? Đó là, viết một kịch bản có thể cung cấp mật khẩu?

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

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

Câu trả lời:


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

Đối với các phiên bản cụ thể, chẳng hạn như mysql-server-5.6, bạn sẽ cần chỉ định phiên bản như sau:

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

Đối với mysql-cộng đồng-máy chủ, các khóa hơi khác nhau:

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

Thay thế your_password bằng mật khẩu gốc mong muốn. (có vẻ như your_password cũng có thể để trống cho mật khẩu gốc trống.)

Nếu hệ vỏ của bạn không hỗ trợ các chuỗi ở đây ( zsh , ksh93bash hỗ trợ chúng), hãy sử dụng:

echo ... | sudo debconf-set-selections 

1
Hãy chắc chắn để thay đổi mysql-server-5.1một phần thành phiên bản mysql hiện tại!
Trưởng khoa thay vì

19
Câu trả lời này dịch sang MariaDB như sau bằng cách thay thế mysql-server-<version>bằng maria-db-<server>. Sự cố xảy ra sau đây mysql-server/ vẫn còn chưa được xử lý
Lukx

5
- Phần <phiên bản> là không cần thiết - hoạt động như một cơ duyên đối với tôi và chung chung hơn nếu không có điều đó.
msztolcman

2
Điều này hoạt động tốt với sausudo apt-get install debconf-utils
Nazin

4
@Lukx cho MariaDB, gói là mariadb-server, không phải maria-db-server. Dù sao cũng cảm ơn bạn đã lưu ý.
ywarnier

238

cái này cần phải dùng mẹo

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

Tất nhiên, nó để lại cho bạn một mật khẩu gốc trống - vì vậy bạn sẽ muốn chạy một cái gì đó như

mysqladmin -u root password mysecretpasswordgoeshere

Sau đó để thêm mật khẩu vào tài khoản.


3
Đã thử nghiệm và hoạt động trong phiên bản Ubuntu 12.04 mới với MySQL 5.5
Alberto Megía

21
Nếu bạn đang cài đặt với sudo, hãy sử dụng -E để biến môi trường được truyền qua. Ví dụ. sudo -E apt-get -q -y cài đặt máy chủ mysql.
Patrick Cullen

35
Bạn cũng có thể thêm biến env trực tiếp vào lệnh (mà không gây ô nhiễm môi trường bên ngoài) bằng cách thêm vào nó -DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server
yoniLavi

2
Mật khẩu mysql sẽ được lưu trữ trong nhật ký bash khi thực hiện theo cách này.
DutGRIFF

3
Làm việc cho tôi trên Debian 8.2 - Tôi đã kết hợp từ @PatrickCullen và @yoniLavi để có được - DEBIAN_FRONTEND=noninteractive sudo -E apt-get -q -y install mysql-serverhoạt động như một cơ duyên!
MuffinTheMan

31

Một cách khác để làm cho nó hoạt động:

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

Lưu ý rằng điều này chỉ đơn giản là đặt mật khẩu thành "root". Tôi không thể lấy nó để đặt mật khẩu trống bằng các trích dẫn đơn giản '', nhưng giải pháp này là đủ cho tôi.

Dựa trên một giải pháp ở đây .


1
echo 'mật khẩu mysql-server-5.5 mysql-server / root_password' | sudo debconf-set-select hoạt động để chỉ định mật khẩu trống cho tôi.
Tsuneo Yoshioka

4
@TsuneoYoshioka Không làm việc cho tôi. Nếu tôi đặt hai dấu cách ở cuối, nó sẽ đặt mật khẩu của tôi thành một khoảng trắng. Với một không gian, nó vẫn cố gắng đưa ra lời nhắc và sau đó bắt đầu cài đặt.
mở

3

Sử dụng:

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'"

Cảm ơn! xác định các biến bên ngoài sudo luôn luôn giúp tôi.
Gaston Sanchez
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.