SQLSTATE[HY000] [2002] 权限被拒绝

问题描述 投票:0回答:5

我收到此错误,不知道原因

SQLSTATE[HY000] [2002] Permission denied
这是我正在尝试上传文件的网站
example.com

php database laravel-4 database-connection
5个回答
60
投票

发生这种情况是因为 selinux 避免了从 httpd 服务器到远程数据库服务器的数据库连接。要解决此问题,您需要通过 ssh 访问您的服务器,或者如果您有预授权访问权限,则只需打开控制台并执行以下操作:

您必须检查 SELinux 是否管理端口 80。您可以通过键入

# 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 服务应该能够从数据库服务器获取数据。

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

  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”标志。

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


26
投票

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


0
投票

如果 Apache 无法连接到远程 MySQL 服务器,而同一服务器上的 mysql 命令行工具可以,则可能有多种原因造成这种差异。您可以采取以下一些步骤来解决该问题:

  1. 检查 MySQL 用户权限: 确保 Apache 使用的 MySQL 用户具有从 Apache 服务器连接所需的权限。有时,用户权限可能仅限于本地主机。

  2. 检查 MySQL 主机限制: 验证 MySQL 服务器是否配置为接受来自 Apache 服务器 IP 地址的连接。有时,MySQL 配置为仅接受来自特定 IP 地址的连接。

  3. 防火墙设置: 确保没有防火墙规则阻止从 Apache 服务器到 MySQL 服务器的传出连接。

  4. MySQL 配置: 检查 MySQL 服务器的配置文件(通常为 my.cnf 或 my.ini),确保其配置为接受远程连接并正在侦听正确的网络接口。

  5. 网络连接:确认不存在阻止 Apache 服务器访问 MySQL 服务器的网络问题。您可以使用 ping 或 telnet 等工具来测试连接性。

  6. 检查 Apache 配置: 检查 Apache 配置文件以确保正确指定连接详细信息(例如主机名、端口、用户名、密码)。

  7. MySQL 错误日志: 检查 MySQL 错误日志中是否有任何相关错误消息,这些消息可能表明来自 Apache 的连接被拒绝的原因。

  8. SELinux 或 AppArmor: 如果在 Apache 服务器上启用了 SELinux 或 AppArmor,则可能会阻止 Apache 进行传出网络连接。检查日志并根据需要调整安全策略。

通过系统地检查这些要点,您应该能够识别并解决阻止 Apache 连接到远程 MySQL 服务器的问题。


-1
投票

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

提供权限:

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

运行安装升级命令

php bin/magento setup:ugrade

最后编译命令

php bin magento setup:di:compile

-5
投票

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

setenforce 0
© www.soinside.com 2019 - 2024. All rights reserved.