Làm cách nào để cài đặt MySQL mà không cần nhắc mật khẩu?


26

Tôi đang cố gắng cài đặt MySQL trên Ubuntu Natty mà không cần nhắc mật khẩu. Tuy nhiên, tôi tiếp tục bị nhắc nhập mật khẩu ở một số giai đoạn sau khi cài đặt chính.

Ngoài ra, khi tôi nhập những gì tôi tin là mật khẩu của tôi (mymysqlpass), nó sẽ cho tôi một thông báo từ chối truy cập. Sau đó, khi tập lệnh kết thúc, tôi có thể đăng nhập vào mysql mà không cần mật khẩu, ví dụ như mysql -uroot, điều này không nên xảy ra.

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

Tôi sẽ rất nguy hiểm! bạn cần cái này ở đâu
Giá vé Pascal

6
Khi bạn cung cấp máy ảo, vì một điều. Nếu bạn thực sự lo lắng, tôi chắc chắn rằng bạn có thể làm một cái gì đó như tạo một mật khẩu bảo mật bằng mật mã ngẫu nhiên và tập lệnh tạo một công việc định kỳ để cho bạn biết mật khẩu tại thời điểm có ít lưu lượng truy cập và hệ thống được thông báo thời gian. Chỉ cần chắc chắn rằng bạn đang nhìn vào máy tính trong 5 giây bạn cho nó trước khi nó biến mất.
chiến thắng

OP nói "Tôi tiếp tục được nhắc nhập mật khẩu" nhưng trong mã ví dụ của anh ấy, chúng tôi có 2 dòng bắt đầu debconf-set-selectionssẽ tránh điều đó, bị bỏ qua vì tôi tin rằng câu hỏi và mã mẫu đã được chỉnh sửa tại hai thời điểm khác nhau và bây giờ câu hỏi không còn ý nghĩa nữa.
mastazi

Câu trả lời:


46

Các lệnh sau thiết lập mật khẩu gốc MySQL strangehatkhi bạn cài đặt mysql-servergói.

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

Lưu ý rằng điều này tạo ra một bản sao rõ ràng của mật khẩu của bạn /var/cache/debconf/passwords.dat(thường chỉ có thể đọc được bằng root và mật khẩu sẽ bị xóa bởi hệ thống quản lý gói sau khi cài đặt thành công mysql-servergói).

Đảm bảo sử dụng dấu ngoặc kép nếu sử dụng nó trong Dockerfile.

Bây giờ bạn có thể cài đặt mysql-servervà lời nhắc mật khẩu không xuất hiện:

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

điều này sẽ cài đặt mysql mà không cần bất kỳ sự can thiệp nào


7

Điều này có thể làm việc để làm cho nó không nhắc bạn:

export DEBIAN_FRONTEND=noninteractive

Đối với tập lệnh, tôi sẽ thử đặt mật khẩu trong dấu ngoặc kép:

mysql_pass="mymysqlpass"

1

Phần này cần một cụm từ viết lại nếu bạn muốn đặt mật khẩu giữa các dấu ngoặc kép: 'mysql-server-5.1 mysql-server / root_password password' $ mysql_pass ''

Đến:

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

Điều này làm việc cho tôi (mật khẩu root trống):

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
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.