当前位置: 首页 > 知识库问答 >
问题:

通过nginx使用mysql\u connet时权限被拒绝,但命令行运行正常

双恩
2023-03-14

我的环境:

CentOS 6.6

Nginx 1.7.10与mod_security,纳克西,ngx_pagespeed模块

PHP5.6。5.

Mariadb 10.0。16

SeLinux闭合

setenforce 0

我的测试代码:

<?php
/*
** Connect to database:
*/

// connect to the database
$con = mysql_connect('localhost','root','my pass')
       or die('Could not connect to the server! ' . mysql_error());

var_dump($con);
exit;

就这样了。

当我用火狐来运行这个脚本时

结果是“无法连接到服务器!权限被拒绝”

nginx错误。日志是

2015/02/18 23:26:33[错误] 1532#0:*68 FastCGI在stderr中发送:"PHP消息: PHP警告:mysql_connect():第9行 /var/www/nginx/aa.php中拒绝权限",同时读取上游的响应头,客户端:客户端ip,服务器:localhost,请求:"GET/test-sql-injection.phpHTTP/1.1",上游:"fastcgi://unix:/var/run/php-fpm.sock:",主机:"server ip"

但是当我使用命令行运行这个脚本时

php aa.php

结果是

resource(5) of type (mysql link)

连接到maria db是成功的...

mysql。sock文件权限为

In/tmp

lrwxrwxrwx. 1 mysql  mysql    25 2015-02-18 21:20 mysql.sock -> /var/lib/mysql/mysql.sock

在/var/lib/mysql中

srwxrwxrwx.  1 mysql mysql        0 2015-02-18 23:03 mysql.sock

所有命令都以root身份运行

当我使用另一个用户运行php命令时

仍然获取权限被拒绝的错误消息!

哪个文件的权限错误?

======

/var/lib/mysql目录权限为700

所以它会导致权限被拒绝的问题。。。。

共有2个答案

公西季
2023-03-14

检查套接字文件的完整路径
套接字路径中的每个目录都必须具有webserver用户的执行权限
例如/var/或/var/lib/或/var/lib/mysql/可以有chmod 700,但它必须有chmod 711。

请注意,设置更宽松的chmod可能会导致安全问题。我建议您移动mysql。sock进入默认目录(如/tmp)可访问的世界

南门焱
2023-03-14

php cgi和php cli使用的不是同一个php。ini文件。比较两个文件,也许你有不同

 类似资料:
  • 我添加了使用权限,包括WRITE_EXTERNAL_STORAGE,android.permission.相机,READ_EXTERNAL_STORAGEAndroidManifest.xml. 当我在Nexus6(API 24)中运行我的应用程序时,它向我抛出了以下错误: java.io.IOException:权限被拒绝 这是我的代码: 如何在权限相机运行时打开之前使用它?

  • 我正在尝试为我的Android应用程序请求运行时权限。这是我的代码: 在我的AndroidManifest中。xml: 但是,上面的代码始终显示权限被拒绝,而不提示用户请求权限。有什么想法吗? 谢谢

  • 我有一个从Ubuntu软件应用程序安装的IntelliJ IDEA Ultimate 2022.1.2。它被配置为使用Maven包装器。当我在java项目上执行“安装”时(从生命周期菜单),我得到两个错误: git测试: 协议测试: maven-wrapper.properties: 同样的项目在不同的机器上运行良好。不能解决问题。

  • 我在清单中添加了对外部存储设备的写访问权限,并在我的Android手机中授予了这些权限。如果他们不存在,我甚至会在执行时要求他们。 然而,我总是得到这个例外: Java语言io。FileNotFoundException:/storage/simulated/03b3d97bd-5186-4506-97dc-9994b7ce0761(权限被拒绝) 你知道为什么吗? 在清单文件中:

  • 问题内容: 通过Flask / Python运行Selenium时收到以下错误 该功能是 如果直接进入应用程序目录并运行脚本(),则不会收到该错误。 基于此,通过Flask运行时,日志文件似乎不可写,但该文件应位于何处? 可执行文件安装在 问题答案: 这些错误为我们提供了一些有关发生了什么错误的提示,如下所示: 按照源代码中的 GeckoDriver 得到了两个默认参数发起和如下: 您的程序在这里

  • 我正在使用Docker Compose运行多个容器,包括一个带有Postgres映像的容器。我正在尝试向该容器添加一个卷,以跨容器构建持久化我的数据。但是,当它尝试在容器中为该卷创建目录时,我收到了一个错误。 我运行: 然后 docker compose up 我收到以下错误: 错误:对于cxbenchmark\u db\u 1,无法启动服务db:oci运行时错误:container\u linu