Ubuntun 20.04重装mysql 8.0.32时报错

云服务器上的 mysql 莫名其妙启动不了,在重装过程中执行 sudo apt-get install mysql-server 命令时遇到报错:

dpkg: error processing archive /var/cache/apt/archives/mysql-server-core-8.0_8.0.32-0ubuntu0.20.04.2_amd64.deb (--unpack):
 unable to create '/usr/lib/mysql/plugin/adt_null.so.dpkg-new' (while processing './usr/lib/mysql/plugin/adt_null.so'): Operation not permitted
dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
Errors were encountered while processing:
 /var/cache/apt/archives/mysql-server-core-8.0_8.0.32-0ubuntu0.20.04.2_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

报错主干是 dpkg: error processing archive ... unable to create '/usr/lib/mysql/plugin/...' Operation not permitted

意思是说 dpkg 在处理文档时出错,出错原因是没有权限在 /usr/lib/mysql/plugin/ 下创建文件。

实际上我们是在超级用户权限下来执行安装命令的,按理说不会权限不足,而且如果我们直接执行 chmod 命令会提示 chmod: changing permissions of '/usr/lib/mysql/plugin': Operation not permitted,所以我们需要先通过 chattr 来修改底层属性再 chmod。

首先我们通过 lsattr 命令来看一下目标文件的属性:

root@iZwz9fsfltolu74amg1v0rZ:/home/atreus# lsattr /usr/lib/mysql/
----i---------e----- /usr/lib/mysql/zlib_decompress
----i---------e----- /usr/lib/mysql/plugin
----i---------e----- /usr/lib/mysql/private

e 表示表明该文件正在使用扩展区来映射磁盘上的块,i 表示不得任意更动文件或目录,所以我们需要删除 i 属性。

通过 chattr -i 来删除指定文件的 i 属性,然后再通过 chmod 修改权限:

root@iZwz9fsfltolu74amg1v0rZ:/home/atreus# chattr -i /usr/lib/mysql/plugin
root@iZwz9fsfltolu74amg1v0rZ:/home/atreus# lsattr /usr/lib/mysql/
----i---------e----- /usr/lib/mysql/zlib_decompress
--------------e----- /usr/lib/mysql/plugin
----i---------e----- /usr/lib/mysql/private
root@iZwz9fsfltolu74amg1v0rZ:/home/atreus# chmod 777 /usr/lib/mysql/plugin

类似的,我们还要修改 zlib_decompress 和 private 这两个目录的属性以及权限,不然后续都会报错。

修改成功后再次执行 sudo apt-get install mysql-server 就能成功安装 mysql 了!

如果对安全性有担忧,可以在 mysql 安装成功后在把三个目录的 i 属性加回去。

猜你喜欢

转载自blog.csdn.net/qq_43686863/article/details/129490562