我在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
希望能帮助别人。