前言:这篇文章是以ArchLinux使用压缩包的方式进行安装配置MySQL,并且安装的是5.7的版本,其他版本可以使用包管理器来安装,比较方便快捷,只有MySQL5.7安装的时候比较麻烦,而且会出现各种各样的情况,所以本文将安装MySQL5.7

安装前的环境准备

在安装MySQL前,请确保你的Linux可以联网,并且具有以下几个软件包:

  • vim — 需要使用vim来编辑配置文件什么的
  • wget —直接使用wget来去官网下载压缩包最快

如果你没有安装,可以使用包管理器来安装上述软件包

下载并解压MySQL

先去MySQL官网找一下你想要的版本,比如这里选择5.7.44,然后系统选择Linux - Generic即可,在下面选择一下系统架构,一般都是x86的架构,然后选择32位还是64位的系统,右键download复制链接就行了

image-20250319202912140
image-20250319202912140

比如我这里选择的是Linux - Generic (glibc 2.12) (x86, 64-bit), Compressed TAR Archive,然后复制它的下载链接就是:

https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz那么使用wget的下载命令就是

Bash
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz

直接把这行命令复制粘贴执行就行了

image-20250319203651482
image-20250319203651482

然后我们解压并移动到 /usr/local目录下,执行以下命令

请注意,这里不能无脑复制,如果你的版本和我不一样请注意替换成你的版本

Bash
tar -xzf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz

sudo mv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql
image-20250319204413945
image-20250319204413945

这里如果提示Permission denied那就是你没权限,加上sudo执行,或者使用root用户执行,因为usr目录需要一定权限,我这里忘记了就会报这个错

初始化MySQL

在初始化mysql之前需要干两件事

  • 创建 MySQL 用户和用户组
  • 创建数据目录

直接执行以下几行命令就行了

Bash
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
sudo mkdir -p /usr/local/mysql/data
sudo chown -R mysql:mysql /usr/local/mysql
image-20250319205859121
image-20250319205859121

然后就可以初始化数据库了,执行以下命令初始化数据库,并获取临时密码

Bash
sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
image-20250319210029050
image-20250319210029050

报了个错,没关系,我们来解决它,首先要知道这个错误是什么意思

error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

这个错误是因为 libaio 库缺失,MySQL 需要它来进行异步 I/O 操作。在 CentOS(或 Arch Linux)上,精简安装可能会出现一些so库不存在。

知道问题了就知道怎么解决了,我们安装这些库

  • 在 Arch Linux 或基于 Arch 的系统上,可以使用 pacman 安装:

    Bash
    sudo pacman -S libaio numactl libxcrypt libxcrypt-compat
  • 在 CentOS/RHEL 7/8/9 上:

    Bash
    sudo yum install -y libaio numactl libxcrypt libxcrypt-compat
  • 在 Ubuntu/Debian 上:

    Bash
    sudo apt update
    sudo apt install -y libaio numactl libxcrypt libxcrypt-compat
image-20250319210436881
image-20250319210436881

检查一下是否安装成功

Bash
ls -l /usr/lib/libaio.so.1 /usr/lib64/libaio.so.1
image-20250319210515505
image-20250319210515505

可以的,没有问题,我们重新执行初始化命令

image-20250319211031363
image-20250319211031363

没有问题了,这样就初始化完成MySQL,并且生成了一个密码,请记住这个密码,后期会需要它q&rydswFC3VA

配置 MySQL

创建 MySQL 配置文件 /etc/my.cnf,你可以参考我的配置,我的配置可能比较精简,可以根据文档自己按需使用

INI
[mysqld]basedir = /usr/local/mysqldatadir = /usr/local/mysql/datasocket = /tmp/mysql.sockport = 3306user = mysqlsymbolic-links = 0character-set-server = utf8mb4collation-server = utf8mb4_unicode_ci

创建 MySQL systemd 服务文件 以配置开机自启等

  • ArchLinux

    在 /etc/systemd/system/ 目录下创建 mysqld.service

    Bash
    sudo vim /etc/systemd/system/mysqld.service

    添加以下内容

    INI
    [Unit]Description=MySQL ServerAfter=network.target [Service]User=mysqlGroup=mysqlExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnfExecStop=/usr/local/mysql/bin/mysqladmin shutdownLimitNOFILE = 5000 [Install]WantedBy=multi-user.target

    重新加载 systemd 并启动 MySQL

    Bash
    sudo systemctl daemon-reload
    sudo systemctl start mysqld
    sudo systemctl enable mysqld
  • CentOS等系统

    Bash
    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
    chmod +x /etc/init.d/mysql
    chkconfig --add mysql

    启动MySQL

    Bash
    service mysql start
    # 或者
    systemctl start mysqld
image-20250319212130576
image-20250319212130576

检查一下有没有启动成功

Bash
sudo systemctl status mysqld
image-20250319212218989
image-20250319212218989

如果 MySQL 启动成功,你会看到类似如下输出:active (running)

如果你看到这样的输出,代表没有添加环境变量,你需要把mysql添加到环境变量里面

image-20250319212546490
image-20250319212546490
Bash
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile

然后就可以进入MySQL的命令行了

Bash
mysql -uroot -p

输入刚刚记下来的密码,输入密码的时候不会显示,感觉输错了就直接回车即可

image-20250319215201850
image-20250319215201850

没有问题,现在我们继续安装完成后的一些操作,修改密码

SQL
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;
image-20250319215433863
image-20250319215433863

退出试一下新密码

image-20250319215448291
image-20250319215448291

没有任何问题,后续自己根据自己的需求修改配置就行了

安装时候遇到的一些问题及解决办法

  • error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

    这种遇到xxx.so的报错都是你的系统太精简了,像我的Arch就是这样,导致很多链接库根本没有,和windows dll不存在是一样的,只需要百度这个so是需要安装什么就可以了,这里给出一些我遇到的不存在库的安装,如果你是别的系统,自己百度一下或者ai一下就出来了

    Bash
    sudo pacman -S libaio numactl libxcrypt libxcrypt-compat
  • error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

    这个也是一个库的问题,但是我要单独列出来,这个原因可能是Arch或者比较新的linux才有的问题,MySQL5.7还是比较老的,这个需要的是libncurses.so.5 但是在 Arch Linux 上,默认安装的是 libncurses.so.6,但 MySQL 5.7 依赖 libncurses.so.5

    Bash
    yay -S ncurses5-compat-libs

    过程还是比较久的