天天看点

MySQL Error Code: 1017. Can't find file: xxx.frm

自己的一个云服务器好久不用, root密码找不到了, 于是重置了一下. 重置时会提醒建议先关机, 否则强行关机可能会导致问题. 然而没有root密码我也关不掉啊? 那就强关吧...

重置后果然出问题了, 部署的几个小应用连接数据库时全部报错. 用数据库工具查询了一个表, 错误是Error Code: 1017. Can't find file: './saasadmin/t_dictionary.frm' (errno: 13 - Permission denied). 其中saasadmin是库名, t_dictionary是表名. 错误提示是因为权限不足, 于是登录服务器, 找到MySQL的datadir, 找到对应库名的saasadmin目录, cd进去ll命令列了一下. 结果发现读写权限全都变成root了, 不仅这一个表, 其他的表也是. 也就是查询其他表也会报一样的错误

那就先把权限改过来. 执行chown mysql.mysql * 权限又改回mysql用户, 这下就正常了

不过随后又出现一个问题, 有几个表在操作的时候会提示表不存在, Error Code: 1146. Table 'saasadmin.t_user' doesn't exist. 但是表明明在这啊. 考虑到数据库默认引擎是MyISAM, 刚才的问题应该是强制关机导致的, 所以先重启一下数据库试试. service mysqld restart 运气不错, 重启后一切正常了

继续阅读