【问题标题】:SQLSTATE[HY000] [2002] Permission deniedSQLSTATE[HY000] [2002] 权限被拒绝
【发布时间】:2016-04-12 22:25:06
【问题描述】:

我收到此错误不知道原因 SQLSTATE[HY000] [2002] Permission denied 这是我尝试上传文件的网站example.com

【问题讨论】:

标签: php database laravel-4 database-connection


【解决方案1】:

这是因为 selinux 避免了从 httpd 服务器到远程 db 服务器的 db 连接。要解决这个问题,您需要通过 ssh 访问您的服务器,或者如果您有 pretencial 访问权限,则只需打开一个控制台并执行以下操作:

如果端口 80 被管理,您必须签入 SELinux。您可以通过键入# semanage port -l | grep http_port_t 来查看列表并检查:

http_port_t tcp 443, 488, 8008, 8009, 8443, 9000

如果您需要添加所需的端口,只需键入:

# semanage port -a -t http_port_t -p tcp 80

再次键入要检查的命令:

# semanage port -l | grep http_port_t

.

http_port_t tcp 80, 443, 488, 8008, 8009, 8443, 9000

然后你应该通知 SELinux 你想允许从 httpd 服务器到 db 远程服务器的网络连接,设置设置它的布尔变量:

  1. 关闭httpd服务# service httpd stop
  2. # setsebool httpd_can_network_connect 1
  3. # setsebool httpd_can_network_connect_db 1
  4. 上httpd服务# service httpd start

现在您的 httpd 服务应该能够从 db 服务器获取数据了。

这些更改在重新启动后不会保留。要使它们永久化,请执行以下操作:

  1. 关闭httpd服务# service httpd stop
  2. # setsebool -P httpd_can_network_connect 1
  3. # setsebool -P httpd_can_network_connect_db 1
  4. 上httpd服务# service httpd start

区别在于“-P”标志。

我希望这对搜索解决此类错误的帮派有用。

【讨论】:

  • 为我工作,但重启后,这些设置将消失。您将需要使用 -P 开关(如 # setsebool -P httpd_can_network_connect 1)永久制作它们
  • 这在 CentOS 7、Wordpress 上就像一个魅力。谢谢。
【解决方案2】:

我可能迟到了回答这个问题,但对我有用的是命令。 我遇到了同样的问题,然后我运行了以下命令。

提供权限:

chmod -R 777 .(虽然不推荐)

运行安装升级命令

php bin/magento setup:ugrade

最后编译命令

php bin magento setup:di:compile

【讨论】:

    【解决方案3】:

    也许你需要关闭你的 selinux 就这样

    setenforce 0
    

    【讨论】:

    • 不建议这样做。
    • FreeBSD 上没有 selinux,但我仍然收到此错误。 :)
    【解决方案4】:

    进入 .env 文件并将 DB_HOST=127.0.0.1 更改为 DB_HOST=localhost

    【讨论】:

    • 这似乎是 socket / UNIX 问题,localhost 在 socket 上工作,而 127.0.0.1 在 tcp 上工作
    猜你喜欢
    • 2021-07-10
    • 2017-05-04
    • 2020-01-22
    • 2017-09-20
    • 2020-03-26
    • 2020-12-04
    • 2020-02-27
    • 2016-11-03
    • 1970-01-01
    相关资源
    最近更新 更多