之前写了 Debian12 安装和配置 PHP7.4 和 Caddy,因为 Debian12 安装 MySQL5.7 会稍微有点繁琐,所以分开写。

Debian12 官方 apt 提供的 MySQL 基本都是 8.0 以上的版本,MySQL 官网的 apt 源也是 8.0 以上的版本。

要在 Debian12 上安装 5.7 或更老的版本就只能手动下载软件包,手动安装和解决依赖问题。

如果你的服务器内存够大的话,也可以直接安装 8.0 以上的版本,无论是功能还是安全性方面都比 5.7 好。

安装依赖

下面安装依赖和用到的工具:

apt install -y libaio1 libmecab2 psmisc libnuma1

后面还会用到 wget,如果没有安装的话也可以安装一下。

MySQL5.7 依赖的 libssl1.1 和 libncurses5 在默认的 apt 里没有,需要添加 Debian11 的源:

echo "deb http://deb.debian.org/debian bullseye main" > /etc/apt/sources.list.d/bullseye-temp.list

更新缓存:

apt update

安装老版本的依赖:

apt install -y libssl1.1 libncurses5 libtinfo5

安装完成后删掉之前添加的 Debian11 源:

rm /etc/apt/sources.list.d/bullseye-temp.list

更新缓存:

apt update

下载 MySQL 软件包

下载的 MySQL 软件包是一个压缩包,其中会包含多个程序,这里创建一个 mysql_install 目录来存放 MySQL 安装包:

mkdir mysql_install
cd mysql_install

下载为 Debian10 构建的 MySQL 安装包:

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.40-1debian10_amd64.deb-bundle.tar

下载完成后解压:

tar -xvf mysql-server_5.7.40-1debian10_amd64.deb-bundle.tar

解压完成后可以看到下面的文件:

.
|-- libmysqlclient-dev_5.7.40-1debian10_amd64.deb
|-- libmysqlclient20_5.7.40-1debian10_amd64.deb
|-- libmysqld-dev_5.7.40-1debian10_amd64.deb
|-- mysql-client_5.7.40-1debian10_amd64.deb
|-- mysql-common_5.7.40-1debian10_amd64.deb
|-- mysql-community-client_5.7.40-1debian10_amd64.deb
|-- mysql-community-server_5.7.40-1debian10_amd64.deb
|-- mysql-community-source_5.7.40-1debian10_amd64.deb
|-- mysql-community-test_5.7.40-1debian10_amd64.deb
|-- mysql-server_5.7.40-1debian10_amd64.deb
`-- mysql-testsuite_5.7.40-1debian10_amd64.deb

安装 MySQL

按照下面的顺序安装用到的程序,安装过程中可能会出现依赖相关的错误提示,可以先忽略。

使用 dpkg 安装 mysql-common:

dpkg -i mysql-common_5.7.40-1debian10_amd64.deb

安装 mysql-community-client:

dpkg -i mysql-community-client_5.7.40-1debian10_amd64.deb

安装过程中可能会出现下面的错误提示:

dpkg: dependency problems prevent configuration of mysql-community-client:
 mysql-community-client depends on libatomic1 (>= 4.8); however:
  Package libatomic1 is not installed.
 mysql-community-client depends on libncurses6 (>= 6); however:
  Package libncurses6 is not installed.

dpkg: error processing package mysql-community-client (--install):
 dependency problems - leaving unconfigured
Processing triggers for man-db (2.11.2-2) ...
Errors were encountered while processing:
 mysql-community-client

直接忽略。

安装 mysql-client:

dpkg -i mysql-client_5.7.40-1debian10_amd64.deb

出现错误提示:

dpkg: dependency problems prevent configuration of mysql-client:
 mysql-client depends on mysql-community-client (= 5.7.40-1debian10); however:
  Package mysql-community-client is not configured yet.

dpkg: error processing package mysql-client (--install):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 mysql-client

还是忽略。

安装 mysql-community-server:

dpkg -i mysql-community-server_5.7.40-1debian10_amd64.deb

出现错误提示:

dpkg: dependency problems prevent configuration of mysql-community-server:
 mysql-community-server depends on mysql-client (= 5.7.40-1debian10); however:
  Package mysql-client is not configured yet.
 mysql-community-server depends on libatomic1 (>= 4.8); however:
  Package libatomic1 is not installed.

dpkg: error processing package mysql-community-server (--install):
 dependency problems - leaving unconfigured
Processing triggers for man-db (2.11.2-2) ...
Errors were encountered while processing:
 mysql-community-server

还是忽略。

如果安装 mysql-community-server 的时候没有出现错误,可能会显示设置 root 密码的界面:

Debian12安装Mysql5.7设置root密码

如果出错就不会显示,但是后面还可以设置。

安装 mysql-server:

dpkg -i mysql-server_5.7.40-1debian10_amd64.deb

出现错误提示:

dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-community-server (= 5.7.40-1debian10); however:
  Package mysql-community-server is not configured yet.

dpkg: error processing package mysql-server (--install):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 mysql-server

还是忽略。

下面进行依赖检查和修复:

apt -f install

前面的依赖相关的错误在这里会被修复。

依赖错误修复完成后应该会显示设置 MySQL root 密码的界面:

Debian12安装Mysql5.7设置root密码

需要输入两次 root 密码。

如果前面没有出现错误,显示了设置 root 密码的界面,运行修复程序完成后也不会再显示这个界面。

测试

如果启用了防火墙的话,需要开启 3306 端口:

ufw allow 3306/tcp

启动 MySQL:

systemctl start mysql

查看 MySQL 状态:

systemctl status mysql

如果看到绿色信息提示就是成功运行。

尝试在命令行连接 MySQL:

mysql -uroot -p

根据提示输入 root 密码,成功连接后会显示类似下面的内容:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.40 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

查看当前存在的数据库:

SHOW DATABASES;

退出 MySQL:

EXIT;

设置开机自动启动

可以先查看一下是否启用了开机自启动:

systemctl is-enabled mysql

如果显示了 enabled 就是开机自动启动,要是显示了 disabled 或其它内容就不会自启动。

启用开机自启动:

systemctl enable mysql

禁用开机自启动:

systemctl disable mysql

常用命令

启动 MySQL:

systemctl start mysql

停止 MySQL:

systemctl stop mysql

重启 MySQL:

systemctl restart mysql

查看 MySQL 运行状态:

systemctl status mysql