在Ubuntu 18.04 WSL上无人参与的MySQL 8社区安装

时间:2019-07-08 12:44:36

标签: mysql bash ubuntu windows-subsystem-for-linux

我试图在没有任何提示的情况下在Ubuntu(这是Linux的Windows子系统)上安装MySQL 8。

我有以下脚本:

apt-key add --keyserver pgp.mit.edu --recv-keys 5072E1F5
echo 'deb http://repo.mysql.com/apt/ubuntu/ bionic mysql-8.0' > /etc/apt/sources.list.d/mysql.list

apt-get update --yes
apt-get install --yes debconf-utils
echo 'mysql-community-server mysql-community-server/root-pass password' | sudo debconf-set-selections
echo 'mysql-community-server mysql-community-server/re-root-pass password' | sudo debconf-set-selections
apt-get install --yes mysql-community-server

(部分归功于this question中的答案)

它似乎工作正常,除了它提示我选择身份验证方法...我想选择mysql_native_password并这样做,而不会出现交互提示。

我猜测解决方案是另一个debconf-set-selections设置,但是...除了询问这种情况是什么...在某处是否有所有可能选项的参考?

还有一个问题,即apt-get表示已为该服务创建了符号链接,但未创建该服务...但这并不是真正的突破,因为我仅将WSL用作测试场对于真正的Ubuntu服务器,我认为这可以工作...希望。

EDIT1:没关系,原来的问题...我设法找到了答案here  导致偶然发现this dockerfile

所以我最终添加了

echo 'mysql-community-server mysql-server/default-auth-override select Use Legacy Authentication Method (Retain MySQL 5.x Compatibility)' | sudo debconf-set-selections

是我需要的那一行...

但是,另一个可能是WSL特定的问题仍然存在...也就是说,没有创建MySQL服务。我应该注意,虽然我在WSL之外使用MySQL,但服务器已关闭,特别是WSL可以运行。

安装完成后,我得到以下输出:

Setting up mysql-community-server (8.0.16-2ubuntu18.04) ...
update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode
dpkg: error processing package mysql-community-server (--configure):
 installed mysql-community-server package post-installation script subprocess returned error exit status 1
Processing triggers for libc-bin (2.27-3ubuntu1) ...
Errors were encountered while processing:
 mysql-community-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

与我有关的唯一一件事是完全重新安装的建议,但是即使重新安装WSL实例也无法解决此问题。

EDIT2:添加

apt-get dist-upgrade --yes --allow-remove-essential --allow-change-held-packages

修复以上错误,尽管没有任何错误,该服务仍未创建。

1 个答案:

答案 0 :(得分:0)

我通过将/etc/init.d/mysql文件从另一个WSL实例(通过升级安装的mysql 8)复制到/etc/init.d来修复丢失的mysql服务

sudo service mysql start

返回[fail],但mysql守护程序运行正常。

否则,我看到人们通过从MySQL的仓库中安装较低版本,然后再升级到mysql 8,来更清楚地实现这一目标。