Linux安装mysql使用压缩包方式安装
文章目录

前言:这篇文章是以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复制链接就行了

比如我这里选择的是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的下载命令就是
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz直接把这行命令复制粘贴执行就行了

然后我们解压并移动到 /usr/local目录下,执行以下命令
请注意,这里不能无脑复制,如果你的版本和我不一样请注意替换成你的版本
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
这里如果提示Permission denied那就是你没权限,加上sudo执行,或者使用root用户执行,因为usr目录需要一定权限,我这里忘记了就会报这个错
初始化MySQL
在初始化mysql之前需要干两件事
- 创建 MySQL 用户和用户组
- 创建数据目录
直接执行以下几行命令就行了
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
然后就可以初始化数据库了,执行以下命令初始化数据库,并获取临时密码
sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
报了个错,没关系,我们来解决它,首先要知道这个错误是什么意思
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 安装:
sudo pacman -S libaio numactl libxcrypt libxcrypt-compat在 CentOS/RHEL 7/8/9 上:
sudo yum install -y libaio numactl libxcrypt libxcrypt-compat在 Ubuntu/Debian 上:
sudo apt update sudo apt install -y libaio numactl libxcrypt libxcrypt-compat

检查一下是否安装成功
ls -l /usr/lib/libaio.so.1 /usr/lib64/libaio.so.1
可以的,没有问题,我们重新执行初始化命令

没有问题了,这样就初始化完成MySQL,并且生成了一个密码,请记住这个密码,后期会需要它q&rydswFC3VA
配置 MySQL
创建 MySQL 配置文件 /etc/my.cnf,你可以参考我的配置,我的配置可能比较精简,可以根据文档自己按需使用
[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
sudo vim /etc/systemd/system/mysqld.service添加以下内容
[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
sudo systemctl daemon-reload sudo systemctl start mysqld sudo systemctl enable mysqldCentOS等系统
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql chmod +x /etc/init.d/mysql chkconfig --add mysql启动MySQL
service mysql start # 或者 systemctl start mysqld

检查一下有没有启动成功
sudo systemctl status mysqld
如果 MySQL 启动成功,你会看到类似如下输出:active (running)
如果你看到这样的输出,代表没有添加环境变量,你需要把mysql添加到环境变量里面

echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile然后就可以进入MySQL的命令行了
mysql -uroot -p输入刚刚记下来的密码,输入密码的时候不会显示,感觉输错了就直接回车即可

没有问题,现在我们继续安装完成后的一些操作,修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;
退出试一下新密码

没有任何问题,后续自己根据自己的需求修改配置就行了
安装时候遇到的一些问题及解决办法
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一下就出来了
sudo pacman -S libaio numactl libxcrypt libxcrypt-compaterror 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
yay -S ncurses5-compat-libs过程还是比较久的
本文标题:Linux安装mysql使用压缩包方式安装
本文链接:https://blog.luola.me/118.html
除非另有说明,本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议。
声明:转载请注明文章来源。