Ubuntu24.04 LTS安装mysql 5.7.23

Ubuntu 24.04 LTS安装mysql 5.7.23,解决AppArmor导致无法修改datadir

yuniee
yuniee   Follow

# Ubuntu24.04 LTS安装mysql 5.7.23

# 🐔一、安装依赖

Ubuntu 24开始不再使用libtinfo5,而是默认使用libtinfo6,也没有 libaio1 和 libaio-dev。但是5.7.23版本比较旧,需要这些旧依赖。所以首先安装这些必要的依赖。

# 🫥1.1 安装libtinfo5

参考:https://blog.csdn.net/engchina/article/details/135396971

sudo apt update
wget http://security.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb
sudo apt install ./libtinfo5_6.3-2ubuntu0.1_amd64.deb

# 🫎1.2 安装libaio1 和 libaio-dev

参考:https://blog.csdn.net/engchina/article/details/139812240

curl -O http://launchpadlibrarian.net/646633572/libaio1_0.3.113-4_amd64.deb
sudo dpkg -i libaio1_0.3.113-4_amd64.deb 
sudo apt-get install libaio-dev

# 🤑二、安装mysql 5.7.23

# 🧐2.1 获取deb-bundle

# 创建目录并进入

mkdir -p /opt/mysql && cd /opt/mysql

# 下载压缩包

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.23-1ubuntu18.04_amd64.deb-bundle.tar

# 解压

tar xvf ./mysql-server_5.7.23-1ubuntu18.04_amd64.deb-bundle.tar

# 安装./libmysql*

sudo apt-get install ./libmysql*

# 🐺2.2 安装客户端

sudo apt-get install ./mysql-community-client_5.7.23-1ubuntu18.04_amd64.deb
sudo apt-get install ./mysql-client_5.7.23-1ubuntu18.04_amd64.deb

# 🥶2.3 安装服务端

sudo apt-get install ./mysql-community-server_5.7.23-1ubuntu18.04_amd64.deb

在这个安装过程中会需要设置root用户的密码。安装之后继续输入以下命令:

sudo apt-get install ./mysql-server_5.7.23-1ubuntu18.04_amd64.deb

此时就安装完成了

# 🥸2.4 验证安装

输入systemctl status mysql可验证:

status

如果如上图一样可以看到running就说明运行成功了。

然后尝试进入MySQL

mysql -u root -p

输入刚才安装过程中设置的密码进入mysql。

输入SELECT VERSION();可以查看版本。说明安装成功,且正常运行,且为正确版本。

# 🥳三、修改datadir

有时候需要修改一个datadir来存储数据,比如想要挂载一个硬盘来专门存储数据等。

首先停止mysql进程

systemctl stop mysql

然后编辑配置文件:

vim /etc/mysql/mysql.conf.d/mysqld.cnf

配置文件中有这样一段配置:

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql                #修改此行
log-error       = /var/log/mysql/error.log

我想要把我的datadir改为/data/mysql,那么需要修改datadir后面的内容

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /data/mysql                #修改此行
log-error       = /var/log/mysql/error.log

然后将/var/lib/mysql下原本的内容全部复制到想要更改的目录/data/mysql下面

cp -R /var/lib/mysql/*  /data/mysql/

然后更改目录的所有者:

chown -R mysql:mysql /data/mysql

之后尝试启动MySQL:

systemctl start mysql

这样就修改成功了。

# 👽四、修改目录时遇见的问题

有时候进行如上修改后,无论如何也不能启动MySQL,可能是因为系统中安装了AppArmor。这会限制MySQL对目录的访问权限。

# 🐮4.1 检查是否安装并开启了AppArmor

user@30-6-database:~$ sudo aa-enabled 
Yes

如上显示YES即安装并开启了AppArmor。

然后进入/etc/apparmor.d/

cd /etc/apparmor.d/

查看有关MySQL的配置:

ls | grep mysql

可以看到如下文件:

mysql

编辑此文件:

sudo vim usr.sbin.mysqld

mysqld

如上,找到# Allow data dir access一栏,添加/data/mysql/ rw, ,赋予MySQL读写我们的新datadir目录的权限。

然后重启apparmor使配置生效:

systemctl restart apparmor

之后再次尝试启动MySQL。这样就不会报错了。

记录一些基础但有用的玩机指南,还有我随心分享的各种内容,希望你能在这里找到你想要的