首页->正文

mysql、nginx权限设置不当导致的两则问题

2011-05-11 -Web开发 标签: mysql nginx

一 启动mysql提示:Can't find file: './mysql/host.frm' (errno: 13)
某台Linux服务器通过mysqld_safe启动mysql总提示:
110509 19:36:34 mysqld_safe Logging to syslog.
110509 19:36:34 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
110509 19:36:35 mysqld_safe mysqld from pid file /var/lib/mysql/ubuntu1010.pid ended


从mysql的配置文件my.conf里面找到错误日志的路径
datadir    = /var/lib/mysql
log_error  = /var/log/mysql/error.log


查看具体的错误日志
tail /var/log/mysql/error.log
...
/usr/sbin/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
110509 19:36:35 [ERROR] Fatal error: Can't open and lock privilege tables: 
Can't find file: './mysql/host.frm' (errno: 13)

可以看到提示找不到./mysql/host.frm这个文件,但是查看/var/lib/mysql下确实存在./mysql/host.frm文件,查找相关资料说可能是mysql/host.frm文件损坏。心想
没这么惨吧?继续查找愿意,查看/var/lib/mysql下文件的权限,发现./mysql目录的所属组是mysql但是用户却是root,想起了安装mysql时要把mysql数据库指定为mysql,随即
把此目录下所有的文件用户修改为mysql,运行mysqld_safe,果然成功了!看来mysql的错误日志提示不厚道啊,竟然提示文件不存在,其实是文件没有权限访问导致。
注:有的错误日志可能是提示
Can't open and lock privilege tables: Can't find file: './mysql/user.frm'


二 nginx下解析PHP页面显示不全的问题
查看nginx的错误日志
[crit] 22275#0: *358 open() "/data/app/nginx/fastcgi_temp/9
/18/0000000189" failed (13: Permission denied) while reading upstream, 
client: 0.0.0.0, server: www.mytest.com, request: "GET /a.php HTTP/1.1", upstream:
 "fastcgi://127.0.0.1:9000", host: "www.mytest.com:81"

发现是fastcgi_temp无权限导致,原来nginx的fastcgi配置中默认的fastcgi_buffers为8 8k,当后端fastCGI返回数据大于此设置时,大于此部分的数据会保存在配置的fastcgi_temp目录下。由于此目录nginx无权限写入就导致了此问题,即页面中只呈现了内存中的内容,而把位于文件中的省去了。
解决方法一是赋予此目录写权限,二是根据页面大小调整fastcgi_buffers
注:nginx重新加载配置文件可以自动修正fastcgi_temp目录的权限问题
详细文档参见 http://wiki.nginx.org/HttpFcgiModule#fastcgi_buffers

下一篇 PHP版本不同导致调用方法不存在

上一篇 用php解析配置文件

相关文章

nginx代理简单应用

nginx SSI模块应用

一则MySQL更新慢的问题

mongodb使用注意事项汇总

文章分类

开发小提示

  • 1:Mongodb中通过db.yourCollectionName. dataSize()查看某个文档的大小
  • 2:linux下用reset命令恢复查看二进制文件导致的命令行乱码
  • 3:查看MySQL表的索引情况show index from tableName
  • 更多...

交流

  • wangnow(a)126.com