找不到文件:'./ci/users.frm'(errno:13)

我在Ubuntu 11.04上安装了LAMP,并从Windows复制项目。 PHP目录(/ ci /)到var / www /和MySQL项目目录(/ ci /)到var / lib / mysql /

我得到的错误全文:

A Database Error Occurred Error Number: 1017 Can't find file: './ci/users.frm' (errno: 13) SELECT COUNT(*) AS `numrows` FROM (`users`) WHERE `email` = 'admin@localsite.com' 

我GOOGLE了它的权限问题,但不知道下一步做什么。

 Log from /var/log/mysql/error.log: 110622 19:27:21 [ERROR] /usr/sbin/mysqld: Can't find file: './ci/users.frm' (errno: 13) 

权限问题意味着文件的权限。 MySQL可能无法读取它。 只需更改所有者和组到MySQL,它应该工作。

 chown mysql:mysql /var/lib/mysql/ci/* 

除了MySQL用户可读的文件之外,包含.MYI文件的目录需要由MySQL用户读取,写入和执行。 在我的系统上,这是通过:

 chown -R mysql:mysql /var/lib/mysql/dbname chmod -R 660 /var/lib/mysql/dbname chown mysql:mysql /var/lib/mysql/dbname chmod 700 /var/lib/mysql/dbname 

我遵循这个步骤:

  • 停止mysql服务。

  • 将my.cnf行数据块修​​改为我的自定义位置。

  • 删除我们新的自定义位置中的所有文件ib_data *,ib_logfile *

  • 用你的语句改变整个文件夹的权限:chown mysql:mysql -R / custom_location / mysql / *

  • 再次启动mysql服务。

有用!!

谢谢

如果该表不在数据库中,也会发生此错误; 所以如果您更改了目录的权限,并且仍然遇到问题,请检查您的数据库并确保表格在那里。

所以假设你有一个像OP一样的错误:

Can't find file: './ci/users.frm'

ci是数据库名称

用户是表名

因此,在这种情况下,如果您更改了权限,但仍然存在此问题,您可以验证用户表是否位于ci数据库中。

@Brent Baisley它在XAMPP for Linux中工作,但位置不同。

我今天升级了内核,修复了新的Linux“Dirty Cow”漏洞(CVE-2016-5195)。 重启后我也得到了'frm'权限错误。

所以,如果你得到以下错误:

 Can't find file: 'yourtablename.frm' (errno: 13 - Permission denied) SQL query :... 

你可以做:

 chown mysql:mysql /opt/lampp/var/mysql/yourDBname/*.frm 

这将解决您的问题。

如果您想要检查,如果您在执行权限更改之前对任何文件的权限已被修改,请执行以下操作:

 ls -l /opt/lampp/var/mysql/yourDBname/*.frm 

希望能帮助别人。