oracle的docker容器中默认用户是root,在容器里直接sqlplus sys/sys as sysdba登的时候一直提示ORA-12546:TNS:permission denied
。
刚开始以为oracle没有开启允许本地登陆,然后就从network/admin/samples/sqlnet.ora
复制到network/admin
下,修改sqlnet.authentication_services
为
sqlnet.authentication_services=(NTS)
然后重启容器,进容器里登陆还是报原来的错,而且甚至于使用navicat登陆报错
然后就把sqlnet.ora改回去了。
之后又怀疑是监听问题,然后改了监听配置文件,尝试stop后start监听时,一直提示权限问题(抱歉没截图),网上查了查,基本都说是
/var/tmp/.oracle
和/tmp/.oracle
文件的读写权限问题,但即使是授权给root用户也没用。最后在容器内使用oracle用户而非root用户解决了问题。在容器内切换到oracle用户,然后先配置了环境变量,包括
ORACLE_SID
,完事儿直接登陆sqlplus sys/sys as sysdba
还是报错,不过跟root用户不一样了。这种的可以先sqlplus /nolog
,然后再connect sys/sys as sysdba
就没问题。*注:root用户使用
sqlplus /nolog
登陆后再切sys,还是会报ORA-12546:TNS:permission denied
emm总之问题解决了。但至于为什么会必须使用oracle用户才可以还不清楚,如果有知道的麻烦解释一下,感谢(抱拳)