Ubuntu에 MySQL을 스크립트로 설치

Ubuntu에 MySQL을 스크립트로 설치

새로운 Ubuntu 서버 설치에서 서버를 구축할 스크립트를 작성해야 합니다. Apache나 PHP와 같은 것 중에서 MySQL을 설치해야 합니다. 여기서 유일한 문제는 apt-get을 사용하여 MySQL을 설치할 때 어느 시점에 설치 중에 루트 비밀번호를 입력할 수 있는 대화 상자가 표시된다는 것입니다. 즉, 인간의 상호 작용이 필요합니다.

설치 중에 이 화면을 우회하고 apt-get을 사용하여 MySQL을 설치하는 동안 인간 상호 작용을 피하려면 어떻게 해야 합니까?

답변1

debconf 데이터베이스를 미리 설정해야 합니다. 이것을 시도하기 전에 먼저 debconf를 설치해야 합니다.

mysql 및 ubuntu 버전에 따라 다음 줄이 변경될 수 있습니다.

echo mysql-server mysql-server/root_password select PASSWORD | debconf-set-selections
echo mysql-server mysql-server/root_password_again select PASSWORD | debconf-set-selections

예를 들어 다음이 필요했습니다.

echo mysql-server-5.0 mysql-server/root_password password PASSWORD | debconf-set-selections
echo mysql-server-5.0 mysql-server/root_password_again password PASSWORD | debconf-set-selections

답변2

FAI 및 유사 시스템은 기업 환경에 도움이 되지만(그리고 이에 대해 알아야 함) 불행하게도 만병통치약은 아닙니다.

예를 들어, 호스트되거나 임대된 서버, 신뢰할 수 있는 네트워크나 전용 네트워크가 없는 공동 배치된 서버 또는 EC2와 같은 클라우드 환경과 같은 원격 시스템에서 작업하는 경우에는 어떻게 될까요? 어떤 종류의 PXE 네트워크 부팅도 작동하지 않습니다. 그러나 Puppet과 Chef는 그에게 도움이 될 수 있는 보다 일반적인 용도의 도구인 것 같습니다.

cat << EOF | DEBIAN_FRONTEND=noninteractive DEBCONF_DB_FALLBACK=Pipe /usr/bin/apt-get install somepackage

Name: ...
Template: ...
Value: ...
Owners: ...
Variables:
   ....
   ....
EOF

이미 설정된 시스템의 debconf DB에서 올바른 값을 얻을 수 있습니다. 이 기술을 사용하면 단일 쉘 스크립트에 모든 것을 넣을 수 있습니다. 예를 들어, /var/cache/debconf/passwords.dat에서(Debian의 5.0과 5.1 및 Ubuntu 모두에서 작업할 수 있다는 점에 유의하세요. 추가 항목은 아무 것도 손상시키지 않습니다):

cat << EOF | DEBIAN_FRONTEND=noninteractive DEBCONF_DB_FALLBACK=Pipe /usr/bin/apt-get -qq -y install mysql-server
Name: mysql-server/root_password
Template: mysql-server/root_password
Value: YOURPASSWORD
Owners: mysql-server-5.1
Flags: seen

Name: mysql-server/root_password_again
Template: mysql-server/root_password_again
Value: YOURPASSWORD
Owners: mysql-server-5.1
Flags: seen

Name: mysql-server/root_password
Template: mysql-server/root_password
Value: YOURPASSWORD
Owners: mysql-server-5.0
Flags: seen

Name: mysql-server/root_password_again
Template: mysql-server/root_password_again
Value: YOURPASSWORD
Owners: mysql-server-5.0
Flags: seen

EOF

또 다른 방법은 아마도 더 쉬울 것입니다: (debconf-get-selections 또는 debconf-utils 패키지의 debconf-show에서 답변을 수집하십시오):

echo "Installing MySQL 5.0.."
sudo apt-get install -qqy debconf-utils
cat << EOF | debconf-set-selections
mysql-server-5.0 mysql-server/root_password password YOURPASSWORD
mysql-server-5.0 mysql-server/root_password_again password YOURPASSWORD
mysql-server-5.0 mysql-server/root_password seen true
mysql-server-5.0 mysql-server/root_password_again seen true
EOF
/usr/bin/apt-get -y install mysql-server-5.0 mysql-server

debconf-set-selections를 실행한 후 답변을 확인하세요: cat /var/cache/debconf/passwords.dat

그리고 테스트하는 동안 모든 데이터베이스(특히 이 데이터베이스가 저장된 mysql 데이터베이스)를 제거 및 제거하고 구성 DB가 손상된 경우를 대비하여 수정하세요.

apt-get --purge remove mysql-server*; /usr/share/debconf/fix_db.pl 

이에 대한 몇 가지 팁: 1) see 플래그와 _again 비밀번호가 있어야 합니다. 2) 비밀번호 앞뒤에 따옴표를 넣어서는 안 됩니다. 인용되지 않은 MySQL 쿼리로 들어가므로 필요한 경우 직접 인용해야 합니다. 이는 공백이 없다는 의미이기도 합니다. (내 생각에는) 3) 문제가 있는 경우 미리 설정을 직접 수행한 다음 직접 MySQL 설치를 실행하고(일반 터미널/tty에서) debconf가 알려 주는 내용을 확인하십시오. 거기에 경고와 오류가 표시됩니다.

답변3

재구축해야 하는 서버가 여러 대인 경우 다음과 같은 내용을 살펴보는 것이 좋습니다.인형쉘 스크립트를 작성하는 대신. Puppet에는 설명 언어가 있으므로 시스템을 구현하는 방법이 아닌 시스템의 모양을 정의합니다. 패키지 유형에는 Steven의 답변에 debconf 답변을 정의할 수 있는 responsefile 옵션이 있습니다.

답변4

관련 정보