oracle的docker容器中默認(rèn)用戶是root,在容器里直接sqlplus sys/sys as sysdba登的時(shí)候一直提示ORA-12546:TNS:permission denied。
剛開(kāi)始以為oracle沒(méi)有開(kāi)啟允許本地登陸,然后就從network/admin/samples/sqlnet.ora復(fù)制到network/admin下,修改sqlnet.authentication_services為
sqlnet.authentication_services=(NTS)
然后重啟容器,進(jìn)容器里登陸還是報(bào)原來(lái)的錯(cuò),而且甚至于使用navicat登陸報(bào)錯(cuò)

然后就把sqlnet.ora改回去了。
之后又懷疑是監(jiān)聽(tīng)問(wèn)題,然后改了監(jiān)聽(tīng)配置文件,嘗試stop后start監(jiān)聽(tīng)時(shí),一直提示權(quán)限問(wèn)題(抱歉沒(méi)截圖),網(wǎng)上查了查,基本都說(shuō)是
/var/tmp/.oracle和/tmp/.oracle文件的讀寫(xiě)權(quán)限問(wèn)題,但即使是授權(quán)給root用戶也沒(méi)用。最后在容器內(nèi)使用oracle用戶而非root用戶解決了問(wèn)題。在容器內(nèi)切換到oracle用戶,然后先配置了環(huán)境變量,包括
ORACLE_SID,完事兒直接登陸sqlplus sys/sys as sysdba還是報(bào)錯(cuò),不過(guò)跟root用戶不一樣了。這種的可以先sqlplus /nolog,然后再connect sys/sys as sysdba就沒(méi)問(wèn)題。*注:root用戶使用
sqlplus /nolog登陸后再切sys,還是會(huì)報(bào)ORA-12546:TNS:permission deniedemm總之問(wèn)題解決了。但至于為什么會(huì)必須使用oracle用戶才可以還不清楚,如果有知道的麻煩解釋一下,感謝(抱拳)