PHP MySQL我的权限被拒绝但可以从 MySQL CLI 运行
PHP MySQLi permission denied but working from MySQL CLI
我收到错误消息
Failed to connect to MySQL: Permission denied
当使用 MySQL、MySQLi 和 PDO 从 PHP 连接到远程 MySQL 主机时。
但是,如果我连接到同一台主机,通过 MySQL 从同一台主机在命令行上使用相同的凭据,它会完美运行。
所以我假设它是一个 PHP 配置问题?
连接来自
PHP 5.6.40 (Client API version => mysqlnd 5.0.11-dev)
MySQL 5.5.59
连接到
PHP 5.6.23 (Client API version => mysqlnd 5.0.11-dev)
MySQL 5.5.52
有人知道为什么我可以从命令行连接到 MySQL 但不能从 PHP 连接到具有完全相同凭据的同一主机吗?
我猜你的服务器上启用了 SELinux。
默认情况下,它不允许 apache 进程初始化传出网络连接。
来自 https://serverfault.com/a/456875/442205
的答案副本
检查 SELinux
sestatus
查看在 httpd 进程上设置了哪些标志
getsebool -a | grep httpd
允许 Apache 通过 SELinux 连接到远程数据库
setsebool httpd_can_network_connect_db 1
使用 -P 选项使更改永久生效。如果没有此选项,布尔值将在重新启动时重置为 0。
setsebool -P httpd_can_network_connect_db 1
我收到错误消息
Failed to connect to MySQL: Permission denied
当使用 MySQL、MySQLi 和 PDO 从 PHP 连接到远程 MySQL 主机时。
但是,如果我连接到同一台主机,通过 MySQL 从同一台主机在命令行上使用相同的凭据,它会完美运行。
所以我假设它是一个 PHP 配置问题?
连接来自
PHP 5.6.40 (Client API version => mysqlnd 5.0.11-dev)
MySQL 5.5.59
连接到
PHP 5.6.23 (Client API version => mysqlnd 5.0.11-dev)
MySQL 5.5.52
有人知道为什么我可以从命令行连接到 MySQL 但不能从 PHP 连接到具有完全相同凭据的同一主机吗?
我猜你的服务器上启用了 SELinux。 默认情况下,它不允许 apache 进程初始化传出网络连接。
来自 https://serverfault.com/a/456875/442205
的答案副本检查 SELinux
sestatus
查看在 httpd 进程上设置了哪些标志
getsebool -a | grep httpd
允许 Apache 通过 SELinux 连接到远程数据库
setsebool httpd_can_network_connect_db 1
使用 -P 选项使更改永久生效。如果没有此选项,布尔值将在重新启动时重置为 0。
setsebool -P httpd_can_network_connect_db 1