MySQL 5.7社区服务器非交互式apt安装

11

我试图在Ubuntu 14.04上为非交互式MySQL 5.7社区服务器安装创建一个shell调用。根据各种来源,使用debconf-set-selections应该允许这样的安装,但我无法启动非交互式dpkg安装程序。

以下是我尝试用于非交互式安装的环境变量

vagrant@default-ubuntu-1404:/sql$ echo $DEBIAN_FRONTEND 
noninteractive
vagrant@default-ubuntu-1404:/sql$ echo mysql-apt-config mysql-apt-config/enable-repo select mysql-5.7 | sudo debconf-set-selections

以下是系统中所有的mysql-apt-config设置

vagrant@default-ubuntu-1404:/sql$ sudo debconf-get-selections | grep mysql
    mysql-apt-config    mysql-apt-config/select-tools   select  workbench-6.2 workbench-6.3 connector-python-2.0 connector-python-2.1 router-2.0 mysql-utilities-1.5 mysql-tools
    mysql-apt-config    mysql-apt-config/select-preview select  
    mysql-apt-config    mysql-apt-config/repo-distro    select  ubuntu
    mysql-apt-config    mysql-apt-config/enable-repo    select  mysql-5.7
    mysql-apt-config    mysql-apt-config/repo-url   string  http://repo.mysql.com/apt/
    # Choices: MySQL Server (Currently selected: mysql-5.7), MySQL Tools & Connectors (Currently selected: Enabled), MySQL Preview Packages (Currently selected: Disabled), Ok
    mysql-apt-config    mysql-apt-config/select-product select  
    mysql-apt-config    mysql-apt-config/repo-codename  select  trusty
    mysql-apt-config    mysql-apt-config/unsupported-platform   select  abort
    # Choices: mysql-5.6, mysql-5.7, None
    mysql-apt-config    mysql-apt-config/select-server  select  

安装过程本身:

wget http://dev.mysql.com/get/mysql-apt-config_0.7.2-1_all.deb
sudo dpkg -i mysql-apt-config_0.7.2-1_all.deb

以交互模式启动。

有什么想法吗?


请查看此帖子以了解如何调试并查看哪些部分未正常工作 - https://dev59.com/Xmkw5IYBdhLWcg3wp8Oc#49136923 - 您可能使用了错误的密钥。 - Brett Allred
4个回答

24

如果以 root 身份运行,这对我有效。

export DEBIAN_FRONTEND=noninteractive

debconf-set-selections <<< 'mysql-apt-config mysql-apt-config/repo-codename select trusty'
debconf-set-selections <<< 'mysql-apt-config mysql-apt-config/repo-distro select ubuntu'
debconf-set-selections <<< 'mysql-apt-config mysql-apt-config/repo-url string http://repo.mysql.com/apt/'
debconf-set-selections <<< 'mysql-apt-config mysql-apt-config/select-preview select '
debconf-set-selections <<< 'mysql-apt-config mysql-apt-config/select-product select Ok'
debconf-set-selections <<< 'mysql-apt-config mysql-apt-config/select-server select mysql-5.7'
debconf-set-selections <<< 'mysql-apt-config mysql-apt-config/select-tools select '
debconf-set-selections <<< 'mysql-apt-config mysql-apt-config/unsupported-platform select abort'

wget http://dev.mysql.com/get/mysql-apt-config_0.7.2-1_all.deb
dpkg -i mysql-apt-config_0.7.2-1_all.deb
apt-get update
apt-get install -y mysql-server-5.7

这对我来说无法工作,使用 mysql-apt-config_0.7.3-1_all.deb。我仍然得到交互式提示符。有什么想法吗? - Stanley
9
成功使用了 mysql-apt-config_0.7.3-1_all.deb 并希望为其他人提供如何操作的方式。至少运行一次交互式设置并回答问题。完成后,运行以下命令:debconf-get-selections | grep mysql-apt-config。这会显示必要的 apt 配置设置;复制它们并将其放入您的 bash 脚本中。运行 wgetdpkgapt-get update 命令。在 apt-get install 中,我必须使用 mysql-server 而不是 mysql-server-5.7。查找要安装的软件包的简单方法是运行 sudo apt-cache search mysql | grep mysql。希望对你有所帮助! - Stanley
谢谢!这解决了我的问题...只需要再加一行代码来信任此来源:sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 5072E1F5 - comjf

5
在非root用户运行时,通过sudo命令无法使用导出的变量(DEBIAN_FRONTEND)。将变量包含在dpkg命令中对我有用。
sudo DEBIAN_FRONTEND=noninteractive dpkg -i mysql-apt-config_0.7.2-1_all.deb

4
接受的答案可行。我只是想放置这个链接,它提供了关于如何使用debconf-set-selections和如何找到参数列表的一些解释。

1
目前 https://imsavva.com/silent-installation-mysql-5-7-on-ubuntu/ 已经无法访问。 - David Winiecki
@DavidWiniecki 你仍然可以回到过去:https://web.archive.org/web/20220126180755/https://imsavva.com/silent-installation-mysql-5-7-on-ubuntu/ - mloskot

0

只需运行此命令。适用于16.04版本。

export DEBIAN_FRONTEND=noninteractive

debconf-set-selections <<< 'mysql-server-5.7 mysql-server/root_password password password'
debconf-set-selections <<< 'mysql-server-5.7 mysql-server/root_password_again password password'

apt-get install --assume-yes mysql-server-5.7 mysql-client

#update 'password' to whatever you want to use
mysql -u root -password -e "use mysql; UPDATE user SET authentication_string=PASSWORD('password') WHERE User='root'; flush privileges;"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接