비밀번호 프롬프트없이 MySQL을 어떻게 설치합니까?


26

암호 프롬프트없이 Ubuntu Natty에 MySQL을 설치하려고합니다. 그러나 기본 설치 후 일정 단계에서 비밀번호를 묻는 메시지가 계속 표시됩니다.

또한 암호 (mymysqlpass)라고 생각하는 것을 입력하면 액세스 거부 통지가 표시됩니다. 그런 다음 스크립트가 종료되면 비밀번호 (예 : mysql -uroot)없이 mysql에 로그인 할 수 있습니다.

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

나는 매우 위험 할 것이다! 이거 필요해?
파스칼 요금

6
가상 머신을 프로비저닝 할 때 한 가지 점이 있습니다. 정말로 걱정이된다면, 임의의 암호로 안전한 암호를 생성하고 트래픽이 거의 없을 때 암호를 알려주는 크론 작업을 스크립트에서 생성하여 시스템에 에어 갭이있는 것과 같은 작업을 수행 할 수 있다고 확신합니다 시각. 컴퓨터가 사라지기 전에 5 초 동안 컴퓨터를보고 있는지 확인하십시오.
trysis

OP는 "암호를 묻는 메시지가 계속 표시됩니다"라고 말하지만 그의 예제 코드 debconf-set-selections에는 질문과 샘플 코드가 서로 다른 두 시점에서 편집되었다고 생각하기 때문에 하향식으로 시작하는 두 줄 이 있습니다. 질문은 더 이상 의미가 없습니다.
mastazi

답변:


46

다음 명령 strangehatmysql-server패키지 를 설치할 때 MySQL 루트 비밀번호를 설정합니다 .

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

암호의 일반 텍스트 사본이 생성됩니다 /var/cache/debconf/passwords.dat(일반적으로 루트 만 읽을 수 있으며 패키지를 성공적으로 설치 한 후 패키지 관리 시스템에서 암호를 삭제함 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'"

이것은 나를 위해 일했습니다 (빈 루트 암호).

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.