우분투에서 MySQL의 스크립트 설치


23

새로운 Ubuntu 서버 설치에서 서버를 빌드하는 스크립트를 작성해야합니다. Apache 및 PHP와 같은 것들 중에서 MySQL을 설치해야합니다. 여기서 유일한 문제는 apt-get으로 MySQL을 설치할 때 언젠가 설치시 루트 암호를 입력 할 수있는 대화 상자가 표시된다는 것입니다. 즉, 인간의 상호 작용이 필요합니다.

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


답변:


31

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

예, 작동하지만 설치 후 mysql (mysql -u root에 권한 거부가 표시됨)에 로그인 할 수 없습니다.
Samnang

3
어때mysql -u root -p
PhilT

또한 비밀번호 프롬프트를 표시하지 않으려면 아래에 표시된 'seen'플래그가 필요합니다. 그렇지 않으면 비밀번호를 다시 입력하라는 메시지가 표시됩니다.
Jamieson Becker

5

FAI 및 유사 시스템은 엔터프라이즈 환경에서 유용하지만 이에 대해 알고 있어야하지만 불행히도 만병 통치약은 아닙니다.

예를 들어, 원격 컴퓨터, 호스팅, 임대 서버, 신뢰할 수 있거나 전용 네트워크가없는 배치 된 서버 또는 EC2와 같은 클라우드 환경에서 작업하는 경우 어떻게됩니까? PXE netboot는 작동하지 않습니다. 그러나 꼭두각시와 요리사는 그를 도울 수있는보다 일반적인 목적의 도구 인 것 같습니다.

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에서 (데비안과 5.1에서 5.0과 우분투에서 작업 할 수있는 추가 항목은 아무 것도 아프지 않습니다) :

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-show에서 debconf-utils 패키지에서 답변을 수집하십시오) :

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 데이터베이스가 저장된 데이터베이스)를 제거하고 제거하고 손상된 경우 구성 데이터베이스를 수정하십시오.

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

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


3

서버를 여러 개 재 구축해야하는 경우 쉘 스크립트를 작성하는 대신 Puppet 과 같은 것을 살펴 보는 것이 좋습니다 . 꼭두각시에는 설명 언어가 있으므로 시스템을 가져 오는 방법이 아니라 시스템을 원하는 방식으로 정의 할 수 있습니다. 패키지 유형에는 Steven의 답변에서 debconf 답변을 정의 할 수있는 responsefile 옵션이 있습니다.


1

또한 원시 다리미에서 서버 준비 프로세스를 자동화하는 것이 좋습니다.

오늘날 FAI 는 네트워크에서 우분투를 포함한 대부분의 데비안 기반 시스템을 설치하기위한 프로파일을 가지고 있습니다. 물론 이것은 꼭두각시 답변의 확장 일 뿐이며, 이는 debconf 답변의 확장입니다.

FAI에서 스테이징을 수행 한 다음 꼭두각시를 사용하여 서버 역할에 맞게 사용자 지정 (인형은 데비안 용 debconf (예 : 비슷한 것)과 같이 시스템에 적합한 도구를 자동으로 사용함)은 요즘 인기가 있으며 너무 인기가 없어야합니다. 오히려 당신이하고 싶은 것과 일치하는 예제를 찾기가 어렵습니다.

스테이징 / 구성 서버를 사용함으로써 얻을 수있는 또 다른 주요 이점은 git ( 예 : 체크섬으로 저장소 상태를 명명 할 수있는 이점)을 통해 구성 버전을 제어 할 수있는 논리적 장소이기도합니다. 정말 깨끗하고 재현 가능한 프로세스를 위해 올바른 체크섬을 기록한 경우).


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.