无法创建文件/var/lib/mysql/user.lower-test


11

MySQL数据库已经几个月没有问题了。今天,当我使用Synaptic软件包管理器检查可升级软件包时,它附带了各种MySQL组件(-common,-client,-server等)。因此,我决定升级(我忘记记下已安装的版本,但认为它是5.6.21)升级到5.6.25-1-ubuntu2.0。

Error occured: Can't connect to MySQL server on '127.0.0.1' (111)

然后,我发现服务器未运行。在日志文件中,我喜欢以下消息:

Can't create file /var/lib/mysql/user.lower-test

我已经花了一个小时左右的时间进行在线搜索,尽管以前已经报告过该问题,但在“更新后”问题的背景下却没有看到它,因此不确定下一步是否可以解决。

Answers:


6

这个问题似乎是权限问题或将mysql数据目录更改为/ var / lib / mysql之后的其他位置。

尝试使用sudo运行

看起来/ var / lib / mysql由mysql用户拥有,并且该组也设置为mysql。

$ sudo chown -R mysql /var/lib/mysql
$ sudo chgrp -R mysql /var/lib/mysql
$ sudo chmod 755 /var/lib/mysql

您是否检查过/ var / lib / mysql目录确实存在并与您的数据目录相对应?如果不是,那么您可能必须在mysqld部分下另外指定datadir参数。

[mysqld]
datadir=/var/lib/mysql

然后,您可以在配置apparmor以允许MySQL读取\执行\修改新数据目录和子目录之间进行选择,或者,您自己承担的风险就可以删除apparmor。您可能需要root用户才能执行以下操作:

/etc/init.d/apparmor stop
/etc/init.d/apparmor teardown
update-rc.d -f apparmor remove
apt-get purge apparmor
reboot

我经历了所有这一切,但无济于事。有了备份后,我决定重新安装,一切正常,直到遇到了我遇到的问题。但是问题是Linux还是MySQL ...
MichaelJohn

@MichaelJohn不能说什么。它可能是apparmor或mysql软件包损坏
Hitesh Mundra 2015年

在Ubuntu Xenial上:apparmor在安装时自动安装并启用mysql-server-5.6。即使您先前已将其停用。您无法删除该apparmor软件包,因为它是的依赖项mysql-server-5.6。您可以执行以下操作来解决“无法创建文件/var/lib/mysql/user.lower-test”错误service apparmor stop; service apparmor teardown; update-rc.d -f apparmor remove
Jeroen Vermeulen-MageHost

5

在尝试运行多个MySQL实例时遇到了这个问题,但是我没有删除apparmor,而是更新了usr.sbin.mysqld文件:

vim /etc/apparmor.d/usr.sbin.mysqld

例如,这就是我的文件的样子,一旦我添加了需要写权限的文件夹,所有文件就可以正常工作。

/usr/sbin/mysqld {

  capability dac_override,
  capability sys_resource,
  capability setgid,
  capability setuid,

  network tcp,

  /etc/hosts.allow r,
  /etc/hosts.deny r,

  /etc/mysql/*.pem r,
  /etc/mysql/conf.d/ r,
  /etc/mysql/conf.d/* r,
  /etc/mysql/*.cnf r,
  /usr/lib/mysql/plugin/ r,
  /usr/lib/mysql/plugin/*.so* mr,
  /usr/sbin/mysqld mr,
  /usr/share/mysql/** r,
  /var/log/mysql.log rw,
  /var/log/mysql.err rw,
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,
  /var/lib/mysql1/ r,
  /var/lib/mysql1/** rwk,
  /var/log/mysql/ r,
  /var/log/mysql/* rw,
  /var/run/mysqld/mysqld.pid rw,
  /var/run/mysqld/mysqld.sock w,
  /var/run/mysqld/mysqld1.pid rw,
  /var/run/mysqld/mysqld1.sock w,
  /run/mysqld/mysqld.pid rw,
  /run/mysqld/mysqld.sock w,

  /sys/devices/system/cpu/ r,

}

1
这也对我有用。我必须重新启动服务器才能使其正常运行-只是停止并重新启动AppArmour无效。
MikeHoss '16


1

我有一个类似的问题。我在机器上重新安装了Ubuntu Server,并在硬盘上完整备份了/ etc /,在重新安装后,我将所有重要文件从/ drive / etc /复制到了系统/ etc。

在执行此操作时,我为名为usr.sbin.mysqld.bak的usr.sbin.mysqld文件创建了一个bak,并将其保存在相同的/etc/apparmor.d/目录中。

经过进一步搜索,我发现了此博客文章:https : //blogs.oracle.com/jsmyth/apparmor-and-mysql

安装了apparmor-utils并尝试在/ usr / sbin / mysqld上使用a-complain,它说我定义了2个apparmor配置(两个文件)。

我知道这可能不是您要面对的问题,但是为了清楚起见,请不要像以前那样愚蠢,在apparmor sbin目录的同一目录中制作一个备份文件。


0

还要检查您的分区是否未满,这就是我的情况。

由于未知的原因,将数据移动到另一个分区也无法正常工作。

因此,为了快速解决问题,我减小了/swapfile尺寸,而不是弄乱llvm或gparted 。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.