无法在 ubuntu16.0.4 中安装 mysql-server

doU*_*Man 10 server mysql apt dpkg

sudo apt-get install mysql-server 在这一点上失败它阻止

var/lib/dpkg/info/mysql-server-5.7.postinst: line 143: /usr/share/mysql-common/configure-symlinks: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我发现此错误的解决方案是注释 /var/lib/dpkg/info/mysql-server-5.7.postinst 文件中的第 143 行。

但我的问题是我找不到 /var/lib/dpkg/info/mysql-server-5.7.postinst 文件 .. 更不要说在其中评论一行。

那么如何摆脱卡住的情况


ps:我已经安装了 mariadb 并按照我在谷歌搜索的步骤卸载它


更新:

我已经按照第一个答案给出的步骤操作了,它之前仍然提示该错误

令人惊讶的是,这次我可以sudo vim /var/lib/dpkg/info/mysql-server-5.7.postinst file并且我评论了第 143 行,但是..它报告了另一个错误

ERROR: Unable to start MySQL server:
2017-11-26T08:51:57.033255Z 0 [Note] mysqld (mysqld 5.7.20-0ubuntu0.16.04.1-log) starting as process 22612 ...
2017-11-26T08:51:57.034651Z 0 [ERROR] You have enabled the binary log, but you haven't provided the mandatory server-id. Please refer to the proper server start-up parameters documentation
2017-11-26T08:51:57.035603Z 0 [ERROR] Aborting
Run Code Online (Sandbox Code Playgroud)

big*_*123 12

我通过删除 mariadb 的 deb 源并清除 mysql-common 然后重新安装它来解决这个问题。

做: sudo apt edit-sources并寻找任何包含 mariadb 的东西,例如:deb [arch=amd64,arm64,ppc64el] http://ftp.nluug.nl/db/mariadb/repo/10.3/ubuntu bionic main

通过#在它前面放一个来注释掉它。然后运行

sudo apt update
sudo apt purge mysql-common
sudo apt install mysql-common
Run Code Online (Sandbox Code Playgroud)

之后,您可以通过正确安装mysql-server sudo apt install mysql-server

如果它从回购中消失,脚本是:

#!/bin/sh
set -e

case "$1" in
  install)
    variant="$2"
    my_cnf_path="$3"
    update-alternatives --install /etc/mysql/my.cnf my.cnf "$my_cnf_path" 200
  ;;
  remove)
    variant="$2"
    my_cnf_path="$3"
    update-alternatives --remove my.cnf "$my_cnf_path"
  ;;
esac
```
Run Code Online (Sandbox Code Playgroud)


e20*_*200 5

只需清除所有 mysql 软件包并重新安装:

sudo apt-get remove --purge *mysql*
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get install mysql-server mysql_secure_installation
Run Code Online (Sandbox Code Playgroud)