2012-03-16 179 views
14

我可以在Ubuntu上没有提示与下面的代码安装MYSQL:安装的Percona/MySQL的无人值守的Ubuntu

dbpass="mydbpassword" 
export DEBIAN_FRONTEND=noninteractive 
echo mysql-server-5.1 mysql-server/root_password password $dbpass | debconf-set-selections 
echo mysql-server-5.1 mysql-server/root_password_again password $dbpass | debconf-set-selections 
apt-get -y install mysql-server 

与debconf的设置,选择我的地方在线的部分(可能是这里不能记住),迄今为止它对我来说工作得很好。我不是一个专家,不了解它是如何工作的,但它确实如此。

但是,我想为Percona做同样的事情。我已经设置apt包管理器来处理使用percona的apt-get。所以现在我的代码如下:

dbpass="dbpass" && export dbpass 
export DEBIAN_FRONTEND=noninteractive 
echo percona-server-server-5.5 percona-server-server-5.5/root_password password $dbpass | debconf-set-selections 
echo percona-server-server-5.5 percona-server-server-5.5/root_password_again password $dbpass | debconf-set-selections 
apt-get -y install percona-server-server-5.5 

但是,Percona安装但没有定义的密码。我知道我在debconf位缺少一些东西。

我很感谢这里的一些指导。

在此先感谢。

回答

0

你总是可以做正常的安装,然后脚本:

  • 杀MySQL服务器
  • skip-grant-tables
  • 调整密码
  • 查杀临时启动mysql的不认证
  • 开始定期启动它mysql
+0

我需要100%的无人值守安装。您的方法是否符合法案,您是否有任何代码样本? – 2012-10-12 18:12:50

5

我居然发现,答案在这里install mysql on ubuntu without password prompt,暗示

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

工作,给我留下了,没有密码,这就是我想要的是root用户。

5

debconf-prefix的第二部分不应该包含版本号:

echo percona-server-server-5.5 percona-server-server/root_password password $dbpass | sudo debconf-set-selections 
echo percona-server-server-5.5 percona-server-server/root_password_again password $dbpass | sudo debconf-set-selections 

5.6:

echo percona-server-server-5.6 percona-server-server/root_password password $dbpass | sudo debconf-set-selections 
echo percona-server-server-5.6 percona-server-server/root_password_again password $dbpass | sudo debconf-set-selections 
2

想我想通了

echo "percona-server-server-5.5 mysql-server/root_password password mypassword" | debconf-set-selections 
echo "percona-server-server-5.5 mysql-server/root_password_again password mypassword" | debconf-set-selections 

不要使用export DEBIAN_FRONTEND=noninteractive。如果debconf条目正确,那么您将不会被提示。如果它们不正确,并且您使用noninteractive,则提示将继续输入空白密码。

由于Percona的 '钩到' MySQL的检查它正确安装使用

service mysql status 

,你就会知道它是Percona的,如果你看到这样

的MySQL。服务 - LSB:启动和停止MySQL(Percona的服务器)守护

于是最后检查设置密码正确

mysql -u user -pmypassword 

编辑:这就是说,对于Percona的较新版本,F21我的答案为我工作。你可以检查条目/var/cache/debconf/passwords.dat

+0

谢谢。这是我需要的一段时间,但我会试试看,看看。 – 2016-04-23 15:05:08

+0

适合我。 +1 – Plenka 2016-05-19 17:49:08

0

如果你明白发生了什么,它会使调试更容易,并找出为什么这不起作用。

当你安装一个Debian软件包很多时候,你会得到有关证书,密码,位置等所有这些值都存储在debconf的提问。如果您想要进行无人值守安装,则可以将这些答案预加载到debconf中,这样就不会提示您提出这些问题,因为它们已经得到解答。

挑战在于理解如何正确地回答这些问题的时候。要做到这一点,你首先需要安装的debconf-utils的

apt install debconf-utils

接下来,您需要手动安装软件包。

在我的情况,我在安装的Percona-xtradb集群-57封装。

wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb 
sudo dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb 
sudo apt-get update -y 
sudo apt-get install -y percona-xtradb-cluster-57 

此安装完成后,你可以得到已设置使用deb-get-selections工具的选择。

debconf-set-selections | grep percona 

在响应中,您将看到设置的选择。在这种情况下,

percona-xtradb-cluster-server-5.7 percona-xtradb-cluster-server-5.7/root-pass password 
percona-xtradb-cluster-server-5.7 percona-xtradb-cluster-server-5.7/re-root-pass password 
percona-xtradb-cluster-server-5.7 percona-xtradb-cluster-server-5.7/remove-data-dir boolean false 
percona-xtradb-cluster-server-5.7 percona-xtradb-cluster-server-5.7/root-pass-mismatch error 
percona-xtradb-cluster-server-5.7 percona-xtradb-cluster-server-5.7/data-dir note 

您现在可以复制要设置的值。在我的情况下,我想自动设置root密码。

在您的自动安装脚本中,您现在可以使用debconf-set-selections工具来自动设置root密码问题和确认root密码问题的值。

echo "percona-xtradb-cluster-server-5.7 percona-xtradb-cluster-server-5.7/root-pass password my_temp_password" | debconf-set-selections 
echo "percona-xtradb-cluster-server-5.7 percona-xtradb-cluster-server-5.7/re-root-pass password my_temp_password" | debconf-set-selections 

快乐自动化!