Ubuntu
如何在安裝腳本/包中包含 mysql 腳本
我正在嘗試在 Ubuntu/CentOS 軟體包中結束我們的一個項目。該項目是一個典型的 Web 框架,需要部署一個 tomcat 戰爭文件,創建一些目錄並執行一個 mysql 腳本,該腳本創建一個新的使用者 + 帶有一些表的數據庫等。
現在我不確定如何打包mysql腳本。如果機器上還沒有安裝 mysql,或者使用者已經安裝了工作的 mysql,它應該可以工作。我不確定的是如何使用 root 登錄 mysql,以便添加新使用者和表。
我應該在安裝過程中提示使用者輸入他的 mysql-root 密碼嗎?這可能會增加混亂。或者我可以繞過身份驗證嗎?假設該過程以 sudo 的任何一種方式執行,我也許可以執行 mysqld_safe –skip-grant-tables &,並使用 mysql-root 登錄而無需任何密碼。
在安裝包期間執行 mysql 腳本的常見做法是什麼?
通常的做法是不在安裝時執行此操作。我能想到的理由有 3 個:
- 出於安全原因,甚至嘗試將預設使用者名/密碼組合與軟體包一起發送也不是一個好主意,因為它們將成為許多安裝的弱點。它為最終使用者增加了一些工作量,但堅持他們為服務設置自己的憑據要安全得多。
- 您無法提前知道使用者是否希望將數據庫託管在與應用程序相同的伺服器上,因此在安裝過程中嘗試對其進行設置對於某些使用者來說會很煩人且具有侵入性。
- 在安裝過程中提示輸入超級使用者密碼是一個巨大的禁忌。如果我看到了,我會在那兒按 Ctrl+C 並跑一英里。試圖通過濫用提升的權限來繞過它更糟糕。
如果你想讓你的設置過程更容易,你可以做很多包所做的事情,並附帶一個預設配置。首次訪問時,該站點可以檢查是否仍設置預設設置並顯示初始設置說明(如果設置)。
如果您想走紅地毯,您可以編寫一個單獨的設置腳本來完成大部分工作,甚至將流程編碼到您的應用程序中;提示輸入新的 MySQL 憑據、伺服器和數據庫名稱。您應該鼓勵使用者使它們獨一無二,而不是提供預設值。獲得這些詳細資訊後,您可以使用它們來載入初始架構和數據。