비밀번호 프롬프트없이 우분투에서 MySQL 설치


305

Ubuntu에 MySQL 서버를 설치하는 스크립트를 작성하는 방법

sudo apt-get install mysql 설치되지만 콘솔에 암호를 입력하라는 메시지도 표시됩니다.

비 대화식 방식으로 어떻게해야합니까? 즉, 암호를 제공 할 수있는 스크립트를 작성 하시겠습니까?

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

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

답변:


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

와 같은 특정 버전의 경우 다음과 같이 버전 mysql-server-5.6을 지정해야합니다.

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

mysql-community-server의 경우 키가 약간 다릅니다.

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

your_password를 원하는 루트 비밀번호로 바꾸십시오. (비어있는 루트 암호를 위해 your_password를 비워 둘 수도 있습니다.)

쉘이 here-strings ( zsh , ksh93bash가 지원)를 지원 하지 않는 경우 다음을 사용하십시오.

echo ... | sudo debconf-set-selections 

1
mysql-server-5.1부품을 현재 mysql 버전 으로 변경하십시오 !
Dean Rather

19
이 답변은로 대체 mysql-server-<version>하여 다음과 같이 MariaDB로 변환됩니다 maria-db-<server>. 다음과 같은 상황 mysql-server/ 은 그대로 유지됩니다
Lukx

5
-<version> 부분은 불필요합니다-저에게 매력처럼 작용하며, 그렇지 않으면 더 일반적입니다.
msztolcman

2
이것은 다음과 같이 잘 작동합니다sudo apt-get install debconf-utils
Nazin

4
MariaDB 용 @Lukx에서 패키지는 maria-db-server가 아니라 mariadb-server입니다. 어쨌든 메모 주셔서 감사합니다.
ywarnier

238

이 트릭을해야합니다

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

물론, 그것은 빈 루트 암호를 남깁니다. 따라서 다음과 같은 것을 실행하고 싶을 것입니다

mysqladmin -u root password mysecretpasswordgoeshere

이후 계정에 비밀번호를 추가합니다.


3
테스트와 MySQL 5.5의 새로운 우분투 12.04 인스턴스에서 작업
알베르토 Megía

21
sudo와 함께 설치하는 경우 환경 변수가 전달되도록 -E를 사용하십시오. 예 : sudo -E apt-get -q -y mysql-server를 설치하십시오.
Patrick Cullen

35
env 변수를 외부 환경을 오염시키지 않고 명령에 직접 추가 할 수도 있습니다. –DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server
yoniLavi

2
이렇게하면 mysql 비밀번호가 bash 로그에 저장됩니다.
DutGRIFF

3
데비안 8.2에서 저를 위해 일했습니다. @ PatrickCullen과 @yoniLavi를 결합 DEBIAN_FRONTEND=noninteractive sudo -E apt-get -q -y install mysql-server하여 매력처럼 작동했습니다!
MuffinTheMan

31

그것을 작동시키는 또 다른 방법 :

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

이는 단순히 비밀번호를 "root"로 설정한다는 점에 유의하십시오. 간단한 따옴표를 사용하여 빈 암호를 설정할 수는 ''없었지만이 솔루션으로 충분했습니다.

여기 에 솔루션을 기반으로합니다 .


1
echo 'mysql-server-5.5 mysql-server / root_password 비밀번호'| sudo debconf-set-selections 는 나를 위해 빈 암호를 지정하도록 작동합니다.
Tsuneo Yoshioka

4
@TsuneoYoshioka 나를 위해 작동하지 않습니다. 끝에 두 개의 공백을 넣으면 암호가 단일 공백으로 설정됩니다. 하나의 공간으로 여전히 프롬프트를 표시하려고 시도하고 설치를 망칩니다.
mpen

3

사용하다:

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

감사! sudo 외부의 변수를 정의하면 항상 나를 얻습니다.
가스통 산체스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.