是否可以在 Ubuntu 19.10 上安装 MySQL Server 5.7?

是否可以在 Ubuntu 19.10 上安装 MySQL Server 5.7?

是否可以在 Ubuntu 19.10 上安装 MySQL Server 5.7?如果可以,如何安装?

答案1

MySQL 服务器 5.7 在 Eoan Ermine (19.10) 的存储库中不可用,但在 Bionic Beaver (18.04) 中可用,可从 Ubuntu 的官方存储库以及 MySQL 的存储库获得。您可以使用 Bionic 的存储库在 Eoan 上安装 MySQL 服务器 5.7。

  1. 使用 Ubuntu 18.04 的 MySQL 存储库

    • 首先创建一个具有 sudo 权限的新文本文件:

      sudo nano /etc/apt/sources.list.d/mysql.list
      
    • 添加以下行:

      deb http://repo.mysql.com/apt/ubuntu/ bionic mysql-apt-config
      deb http://repo.mysql.com/apt/ubuntu/ bionic mysql-5.7
      deb http://repo.mysql.com/apt/ubuntu/ bionic mysql-tools
      #deb http://repo.mysql.com/apt/ubuntu/ bionic mysql-tools-preview
      deb-src http://repo.mysql.com/apt/ubuntu/ bionic mysql-5.7
      

      您可以根据需要的软件包注释/取消注释存储库。使用Ctrl+X后跟保存并退出Y。然后运行

      sudo apt update
      
    • 你会得到一个错误,例如

      Err:1 http://repo.mysql.com/apt/ubuntu bionic InRelease                        
        The following signatures couldn't be verified because the public key is not available: NO_PUBKEY <some key value>
      
    • 使用添加此密钥

      sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <key value>
      
    • 更新并检查当前可用的 MySQL 5.7 版本

      sudo apt update
      apt-cache policy mysql-server
      

      在撰写此答案时,5.7.29-1ubuntu18.04 可用。

    • 安装所需的 MySQL 版本。

      sudo apt install mysql-server=5.7.29-1ubuntu18.04
      

    笔记:由于某些原因,在我的安装过程中,APT 在安装 MySQL Server 5.7 时没有安装 mysql-client,MySQL Server 5.7 是 MySQL Community Server 的依赖项,而 MySQL Community Server 又是 MySQL Server 的依赖项,因此出现了依赖性问题。为了解决这个问题,我需要先使用 APT 安装 MySQL 客户端

    sudo apt install mysql-client=5.7.29-1ubuntu18.04
    
  2. 要使用 Ubuntu 的存储库进行安装,请添加 Ubuntu 18.04 的官方存储库,更新缓存并安装 MySQL 5.7。运行:

    echo "deb http://security.ubuntu.com/ubuntu/ bionic-security restricted main" | sudo tee /etc/apt/sources.list.d/bionic.list
    sudo apt update
    apt-cache policy mysql-server
    sudo apt install mysql-server=5.7.29-0ubuntu0.18.04.1
    

    我建议在安装后删除 Bionic 的存储库,因为拥有其他版本的存储库信息有时会破坏安装。为此,请运行

    sudo rm /etc/apt/sources.list.d/bionic.list
    

答案2

补充 Kulfy 的回答。如果要阻止软件包更新回 MySQL 8+,请创建一个名为mysqlat 的文件/etc/apt/preferences.d/

在该文件中放置以下内容

Package: mysql-server
Pin: version 5.7.29-1ubuntu18.04
Pin-Priority: 1001

Package: mysql-client
Pin: version 5.7.29-1ubuntu18.04
Pin-Priority: 1001

Package: mysql-community-server
Pin: version 5.7.29-1ubuntu18.04
Pin-Priority: 1001

Package: mysql-community-client
Pin: version 5.7.29-1ubuntu18.04
Pin-Priority: 1001

这将阻止apt upgrade将 MySQL 升级回版本 8。

笔记:您使用的版本可能不同,截至 2020 年 2 月 12 日,版本为5.7.29-1ubuntu18.04。要获取版本,请运行apt list --installed | grep -E 'mysql-(client|server)'

答案3

扩展 Kulfy 和 NSwanson7 的答案,安装可以修复为版本 5.7.*。无需指定确切的版本。

  1. 将 mysql-client 和 mysql-server 的版本固定为 5.7*。为此,创建文件 /etc/apt/preferences.d/mysql,内容如下
    Package: mysql-server
    Pin: version 5.7*
    Pin-Priority: 1001
    
    Package: mysql-client
    Pin: version 5.7*
    Pin-Priority: 1001
    
  2. 从 Ubuntu 18.04 添加存储库。为此,创建文件 /etc/apt/sources.list.d/mysql.list,内容如下
    deb http://repo.mysql.com/apt/ubuntu/ bionic mysql-apt-config
    deb http://repo.mysql.com/apt/ubuntu/ bionic mysql-5.7
    deb http://repo.mysql.com/apt/ubuntu/ bionic mysql-tools
    deb-src http://repo.mysql.com/apt/ubuntu/ bionic mysql-5.7
    
  3. 更新 repos 并安装
    sudo apt update && sudo apt install mysql-client mysql-server
    

或者使用以下脚本:

echo "deb http://repo.mysql.com/apt/ubuntu/ bionic mysql-apt-config"  | sudo tee /etc/apt/sources.list.d/mysql.list
echo "deb http://repo.mysql.com/apt/ubuntu/ bionic mysql-5.7"  | sudo tee -a /etc/apt/sources.list.d/mysql.list
echo "deb http://repo.mysql.com/apt/ubuntu/ bionic mysql-tools"  | sudo tee -a /etc/apt/sources.list.d/mysql.list
echo "deb-src http://repo.mysql.com/apt/ubuntu/ bionic mysql-5.7"  | sudo tee -a /etc/apt/sources.list.d/mysql.list

echo "Package: mysql-server" | sudo tee /etc/apt/preferences.d/mysql
echo "Pin: version 5.7*" | sudo tee -a /etc/apt/preferences.d/mysql
echo "Pin-Priority: 1001" | sudo tee -a /etc/apt/preferences.d/mysql
echo "" | sudo tee -a /etc/apt/preferences.d/mysql
echo "Package: mysql-client" | sudo tee -a /etc/apt/preferences.d/mysql
echo "Pin: version 5.7*" | sudo tee -a /etc/apt/preferences.d/mysql
echo "Pin-Priority: 1001" | sudo tee -a /etc/apt/preferences.d/mysql

sudo apt update
sudo apt -y install mysql-server mysql-client

相关内容