在 Debian Jessie 上无人值守的 Percona Server 5.7 安装

Unattended Percona Server 5.7 install on Debian Jessie

我正在尝试从 Debian Jessie 上的 Percona 存储库无人值守安装 Percona Server 5.7。我真的不在乎我最终得到的根密码是什么,如果有的话。这是次要的。

到目前为止,我一直没有成功,最终出现了三种不同的情况,每种情况都在不同的步骤中失败:

1) DEBIAN_FRONTEND=noninteractive apt-get -y install percona-server-server-5.7 无限期挂起:http://pastebin.com/QiYUsSJW

服务器已启动,我什至可以使用 mysql -S /var/run/mysqld/mysqld.sock 连接到它,这很奇怪,因为上面粘贴的 "cannot connect to socket" 警告。

挂起时不存在 /etc/mysql/my.cnf 文件,但是目录存在。

2) 使用 debconf-set-selections 为 debconf 数据库预置种子:

percona-server-server-5.7 percona-server-server-5.7/root-pass password supersecret

percona-server-server-5.7 percona-server-server-5.7/re-root-pass password supersecret

然后继续apt-get install percona-server-server-5.7

在这一步中,apt 失败了,因为密码显然仍然是空白:http://pastebin.com/hMsjn0wJ with these logs: http://pastebin.com/61KPgTth

在这种情况下,mysql 服务甚至不会启动,所以我无法判断密码是否真的设置了。但是,在 /var/cache/debconf/passwords.dat 检查 debconf 数据库,我可以看到密码值字段是空的。通过日志返回

Apr 16 16:14:53 gtest mysql-systemd-start[2659]: /usr/share/mysql/mysql-systemd-start: line 37: [: too many arguments

并分析文件,我到达执行 my_print_defaults 二进制文件的地步并且应该是 return mysqld 配置值。相反,它不打印任何内容,导致启动脚本因上述错误而失败。为什么是空的?不知道。可能是因为 /etc/mysql/my.cnf 不存在,就像之前的情况一样。这里也提到了这一点:

Apr 16 17:01:51 gtest mysql-systemd-start[12214]: Percona Server configuration not found at /etc/mysql/my.cnf. Please install one using update-alternatives.

但我希望它在安装时由 apt 填充。看起来像是 apt 中的某种鸡和蛋循环,但超出了我的能力范围。

3) 同2,只是密码特意设置为空。结果与 步骤 1.

相同

我没主意了。有什么建议吗?

谢谢。

在查看关于 SO 的错误答案后,刚刚花了几个小时。这似乎适用于 Ubuntu。我没有使用 export DEBIAN_FRONTEND=noninteractive,也没有提示我输入密码。我有一种感觉,如果 debconf 条目不正确,noninteractive 提示空白密码就可以了。

echo "percona-server-server-5.7 mysql-server/root_password password supersecret" | debconf-set-selections
echo "percona-server-server-5.7 mysql-server/root_password_again password supersecret" | debconf-set-selections

Percona 'hooks into' MySQL 所以你可以使用

检查它确实是 运行
service mysql status

如果你看到类似

的东西,你就会知道它是percona

mysql.service - LSB: Start and stop the mysql (Percona Server) daemon

然后测试登录

mysql -u user -psupersecret

我实际上是从你关于检查 /var/cache/debconf/passwords.dat 的一次性评论中得到这个的,所以谢谢你

大家好消息!我弄清楚了 真正 的问题所在。

以上所有情况很可能是我反复尝试在已经设置好的盒子上成功造成的。这导致了典型的拆分包依赖地狱问题。通过依赖树我发现,除其他外,有一个依赖包 mysql-common 它令人惊讶地只包含一个文件, /etc/mysql/my.cnf 加上一些空目录和典型的 Debian 文档结构。

考虑到此包后,无人值守安装使用所有三种方法都按预期工作。现在唯一剩下的就是如何自动执行 mysql_secure_installation

对于 Debian 10,myol 描述的答案不适用于 percona-server-server-5.7,但预播工作正常,正如 mikky 在它的初始 post:

echo "percona-server-server-5.7 percona-server-server-5.7/root-pass password supersecret" | debconf-set-selections
echo "percona-server-server-5.7 percona-server-server-5.7/re-root-pass password supersecret" | debconf-set-selections

显示预种子数据库中当前的内容 运行:

debconf-show percona-server-server-5.7

安装并访问数据库:

apt-get install percona-server-server-5.7
mysql -u root -psupersecret

安装后/var/cache/debconf/passwords.dat中预置数据库的密码Value字段确实为空,但预置密码仍然有效。所以我想这可能是一种新的安全措施,用于清理实际值。

重试进程运行(谨慎使用,它会删除数据库!):

dpkg -P percona-server-server-5.7