1. 程式人生 > 資料庫 >Oracle資料庫使用Navicat premium建立使用者時遇到的坑

Oracle資料庫使用Navicat premium建立使用者時遇到的坑

       最近受疫情影響,所以一直是遠端辦公,所以在家無法直接連線公司的資料庫,於是自己需要本地建立資料庫。建立完資料庫後,在執行專案時,一直報錯,錯誤大致的描述就是連接出錯,無法連線資料來源之類的;

因為一直用的是Navicat premium這個工具,之前偶爾也用PLSQL/Developer,在建立專案中需要使用的三個庫(三個使用者)使用的是Navicat;當時沒有注意建立使用者時的一些問題,導致專案連線不上資料庫。其實問題還是因為Navicat中建立使用者時大小寫的規則問題。現在做一下總結。

1、使用Navicat建立Oracle資料庫使用者時,使用者名稱用小寫或者大寫,在使用者檢視介面都會自動轉換成大寫,接下來演示一下:

使用查詢視窗建立一個使用者ttsp,然後重新整理資料庫:

可以看到左側的資料例項直接轉換成大寫的TTSP

然後再刪除使用者ttsp,重新整理使用者

然後再用大寫的建立一個使用者TTSP,授予dba許可權

看到使用者是大寫,小寫的建立使用者也是大寫;

接下來建立一個使用者,使用雙引號

可以看到左邊看到的使用者名稱確實是小寫的ttsp,注意了坑就在這裡,如果你只是看到這個地方顯示的是ttsp,然後你在專案中資料來源配置檔案中,使用ttsp為使用者名稱,就會報錯;(可以看到我左邊建立了一個manager使用者和MANAGER使用者,對,這個是專案中用到的,manager使用者就是用的這種方式建立的,但是自己忘記了,年前建立過一次);

為了演示manage使用者連接出錯,先把MANAGER使用者刪除

注意使用者下有資料表時,刪除語句要加上cascade;不然會報錯的,之前演示的沒有加cascade,是因為是一個空使用者。

現在只剩manager使用者了(使用的是create user "manager" identified by "manager");

現在切換到專案的配置檔案中,啟動專案

然後在瀏覽器中訪問專案:

 

可以看到直接在配置檔案中配置manager使用者,密碼是manage,專案啟動會報錯:無效的使用者名稱/密碼,登入被拒絕;所以這樣直接檢視Navicat的檢視頁面中使用者配置資料來源會出錯!

接下來用PLSQL/Developer驗證一下:

 

也會提示這個錯誤

但是如果用"manager"/"manager"來登入就可以登入成功

 

 

接下來再Navicat中重新建立MANAGER使用者(因為剛才為了排除干擾MANAGER使用者給刪除了);

 

 傳輸完成之後,MANAGER使用者下就有資料了

然後刪除"manager"使用者,也是為了排除干擾(注意刪除使用者前需要先斷開使用者的連線)

沒了"manager"使用者,然後在專案中修改資料來源配置

可以看到修改配置後,啟動專案雖然有錯,但是沒有報使用者名稱及密碼無效的錯誤;然後再到瀏覽器中訪問專案:

 可以正常進入主頁了!

有趣的是,在專案中把資料來源配置改一下,把使用者名稱和密碼改成小寫manager,發現照樣可以連線

 

照樣可以訪問,此時配置的manager使用者其實就是MANAGER使用者(相當於沒有區分大小寫),用PLSQL/Developer測試也是一樣。(注意我用的Oracle10g,所以使用者名稱和密碼預設不區分大小寫,Oracle11g及以後是區分大小寫的,可以通過設定alter system set sec_case_sensitive_logon=false來不區分大小寫);所以建立使用者的時候直接建立大寫的即可,最好不用帶雙引號去建立使用者。