当前位置: 首页 > 面试题库 >

连接数据库错误类型:2002:权限被拒绝

扈昀
2023-03-14
问题内容

我正在尝试使用以下脚本连接数据库(cxn-test.php)

<?php
$host = '155.30.136.20';//dummy ip 
$user = 'abc_user';
$pass = 'xxxxxxxxx';
$dbname = 'welcome';
$link = mysqli_connect($host, $user, $pass,$dbname);
if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}else {
    echo "success" . PHP_EOL;
}

当我在终端上尝试时

php cxn-test.php //成功

但是当我尝试在本地主机上时,出现以下错误,

curl -s http://localhost/cxn-test.php

Error: Unable to connect to MySQL. Debugging errno: 2002 Debugging error: Permission denied

这是一个奇怪的问题,它无法在localhost上运行,但在命令行上运行良好。


问题答案:

在获得运行SELinux的新CentOS
7盒后,我遇到了同样的问题。我可以从命令行连接到远程MySQL数据库服务器,但是Drupal(和测试PHP脚本)却不能。

原来是SELinux安全策略。

默认情况下,策略 httpd_can_network_connect_db 被禁用(这意味着您的Web服务器 无法 联系远程数据库。)

通过以下方式检查:

getsebool -a | grep httpd

如果httpd_can_network_connect_db为关闭,请通过以下方式启用它:

setsebool -P httpd_can_network_connect_db 1

(-P标志使更改永久生效,因此该设置在重新启动后仍然有效。)



 类似资料:
  • 问题内容: 我运行 npm install lodash, 但它抛出 错误:EACCES:权限被拒绝 错误。我知道这是权限问题,但据我所知,本地安装节点模块不需要sudo权限。如果我使用sudo运行它,它将安装在〜/ node_modules文件夹中。 drwxrwxr-x 是现有文件夹的文件许可权。我不知道可能出了什么问题。 下面是错误消息。 问题答案: 使用 npm init 创建 packa

  • 我运行npm install lodash,但它抛出错误:EACCES:权限被拒绝错误。我知道这是权限问题,但据我所知,在本地安装节点模块不需要sudo权限。如果我用sudo运行它,它会安装在~/node\u modules文件夹中。drwxrwxr-x是现有文件夹的文件权限。我不知道可能出了什么问题。 下面是错误消息。

  • 注意:最后一个###.##.###.####是运行代码的google compute VM的外部IP。我相信前两个IP是我的家IP。 在连接到上游:[nginx]时,我尝试了:上的

  • 似乎有很多关于StackOverflow的问题,但不幸的是,没有什么对我有效。 我在nginx上得到了一个502坏网关,日志中有以下内容: 我正在运行上的和,我一直在数字海洋上遵循这个指南。显然,我正确地配置了,因为工作,但我一直收到权限拒绝错误,我不知道原因: 在遇到这个问题和另一个问题后,我更改了文件,并添加了、、和参数(还尝试了只设置前两个或,以及两个不同的权限设置——即使是最允许的权限设置

  • 所以我想部署我现有的laravel porject到我的digitalOcean vps我用户这个啧啧,我上传我的网站成功 我的环境文件也是 但问题是 我使用mysql创建并运行了,得到了这些错误,问题出在哪里 [Illumb\Database\QueryException]SQLSTATE[HY000][2002]连接被拒绝(SQL:select*from information\s chema

  • 我对根用户、超级用户、用户和权限非常困惑!我无法在用户“athleticu”中创建数据库。以下是我使用的命令:- 请有人澄清我的疑问,告诉我该写什么!