Oracle TNS 权限被拒绝 *

Posted

技术标签:

【中文标题】Oracle TNS 权限被拒绝 *【英文标题】:Oracle TNS Permission Denied * 【发布时间】:2015-12-12 02:09:59 【问题描述】:

我正在使用:

CentOS 6.7 Zend.1.2.15 使用 oci8,使用 Instantclient 11.2 x64 php 5.4.45

尝试连接到 Oracle:

Oracle 数据库 10g 版本 10.2.0.4.0

已检查凭据,已尝试连接到其他 Oracle 服务器但错误仍然相同:

12546 ORA-12546: TNS:permission denied *

已经给了 0777 权限到 /usr/local/oracle/11.2/client64/ 跟随一些答案,但没有一个解决。

服务器没有任何类型的黑名单中的 IP。

相同的代码可以在任何其他带有 OracleInstantClient 的 Windows PC 上运行,并且不需要在服务器上进行进一步配置来授予 IP 访问权限或任何权限。

还有什么我可以检查来解决这个问题的吗?

【问题讨论】:

您确定要使用即时客户端 - 您没有在它首先看到的那台计算机上安装完整客户端吗? @AlexPoole 来自oracle.com/technetwork/topics/linuxx86-64soft-092277.html,安装的文件是:oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm 和 oracle-instantclient11.2-devel-11.2.0.4 .0-1.x86_64.rpm。 是的,我了解到您已经安装了即时客户端;但是您是否已经拥有完整的客户?你能看到 PHP 实际使用了哪些 Oracle 二进制文件和库吗?我之所以问,是因为我知道当权限错误时,您可以使用完整的客户端(或服务器)软件获得该错误,但我不知道如何使用即时客户端获得它。只是一个疯狂的猜测。 我不认为我有一个完整的客户,没有。据我所知,PHP 使用 oci8 作为库。我应该运行任何命令来检查是否安装了完整的客户端?不是 UNIX 专家。 【参考方案1】:

经过几个小时的搜索,我找到了这篇文章:http://www.emsperformance.net/2013/12/20/connecting-to-oracle-database-from-php-with-oci8/,这是迄今为止解释 LAMP、Oracle、Zend 安装过程的最佳文章。

我缺少的设置是:

setsebool -P httpd_can_network_connect on

编辑:一段时间后,这个答案对某些人来说仍然有用,值得一提的是,这是因为机器激活了 SELinux,通常在 enforcing 模式下。我不建议禁用 SELinux,但将其设置为 permissive 看起来可以简化识别某些问题的过程。您可以通过sestatus查看 SELinux 状态。

SELinux 上的完整布尔值列表位于:https://wiki.centos.org/TipsAndTricks/SelinuxBooleans

整体信息:https://wiki.centos.org/HowTos/SELinux

【讨论】:

我用过它,然后它解决了我的问题,我的一个提示,如果你有一个 laravel 7 / centos 7 / oci8,只需使用 setsebool httpd_can_network_connect on

以上是关于Oracle TNS 权限被拒绝 *的主要内容,如果未能解决你的问题,请参考以下文章

各位大神 我用scott或者sys用户 连接本地的oracle报错12546:权限被拒绝 该怎么解决

ora-12546 oracle创建实例时报错

使用pl/sql的导入表工具导入dmp文件时,导入报错:遇到ORACLE错误 12546,请问怎么解决阿

ios 被拒的原因记录(因为权限问题被拒)

让我们加密 SSL 无法以“错误:EACCES:权限被拒绝,打开 '/etc/letsencrypt/live/domain.net/privkey.pem'”开始

iOS 审核被拒问题总结