2012-10-13 45 views
1

我是一名Python開發人員,但我也有一些Java經驗(主要是使用struts)。在工作中,我遞了一個Grails應用程序來安裝,這沒問題,但應用程序的所有者沒有提供任何憑據,並且該應用程序加載到登錄頁面。連接到Grails應用程序數據庫

我解開了這場戰爭,但我認爲數據庫配置已經打包到某個地方的jar中,因爲我似乎無法找到任何連接URL。我在部署應用程序後創建了一個h2 db文件,所以我想知道:

如何像SQLite或mysql客戶端一樣連接到數據庫,瀏覽表並創建管理員用戶我可以登錄?

回答

1

去反編譯。您不僅需要用戶和密碼,還需要至少一個數據庫JDBC URL。這可能包括DBMS名稱,主機,端口,數據庫名稱 - 具體取決於Java驅動程序。然後按照Python中或其他方式進行連接,或使用DBVisualizer進行連接。

但是,如果數據庫在H2/hsql中(URL類似於jdbc:h2:mem:XXX),則會出現問題:它是一個Java進程內DBMS。爲了獲得外部訪問權限,您需要更改已反編譯的代碼,將其編譯並用some additions打包。希望這不是你的情況。

hsql/H2情況下的另一種方法是查找和反編譯數據庫引導程序代碼 - 因爲它是一個進程內數據庫,它應該在每次應用程序啓動時填充,所以應該有一個代碼來創建該超級用戶。

+0

我確實最終反編譯了代碼,並找到了DB用戶名和密碼。然後我用H2數據庫GUI檢查了db文件,結果發現公共模式是空的。我認爲該應用有一個網址來設置它。無論哪種方式,明天都會安排webex與應用程序所有者一起指導我們完成配置 –

+0

他們正在合作的好事。順便說一句,你知道你貶低的數據庫不是應用程序正在使用的數據庫嗎? 「進程中」意味着「內存」和「每次運行應用程序時重新創建」,因此在您的H2 GUI中創建了一個新實例。這就是爲什麼我在討論在反編譯源代碼中尋找引導代碼的原因。 –

-1

我不知道Python是否可以連接到Java數據源,但它可能是一個解決方案。

另一個解決方案可能是從Grails端提供一些REST web服務,以使python程序可以訪問數據庫。這是我喜歡的方式,我經常選擇。

順便說一句,您在配置目錄(grails-app/conf/DataSource.groovy)中配置了Grails使用的數據庫,並且您將獲得可以轉換爲數據庫的jdbc URL古典的URL。例如:jdbc:mysql:// localhost/my_app引用localhost上的數據庫my_app和mysql數據庫的默認端口。

隨意問你是否需要更多信息。

乾杯

+0

當我解開戰爭時,WEB-INF/grails-app中沒有conf目錄,所有這些都有視圖,這就是爲什麼我認爲它以某種方式被打包到jar中。有一個休眠插件目錄,但沒有數據庫配置那裏要麼 –

+0

剛發現這個:./WEB-INF/classes/DataSource.class確認我的懷疑 –

0

Grails中,數據庫配置,包括身份驗證設置,在一個名爲Datasource.groovy文件,然後將其編譯成WAR聲明。您將需要源代碼來查找H2 DB的用戶名和密碼。

+0

我反編譯DataSource.class找到用戶名和通行證。然後下載h2 jar並運行:** java -cp「h2-1.3.169.jar:$ H2DRIVERS:$ CLASSPATH」-Dh2.binAddress = 0.0.0.0 org.h2.tools.Server -tcp -tcpAllowOthers **但是它正在抱怨司機。任何建議 –

+0

愚蠢的我,我會認爲安裝程序將正確設置變量H2DRIVERS :)我很高興我是Python開發人員 –

+0

哪個驅動程序沒有找到? H2安裝程序無法真正知道非H2 JDBC驅動程序的位置... –

相關問題