問題三
在成功列出了 /var/www/html/DVWA/database/ 裡的檔案,但裡面沒有原本要匯入的 database.sql,這就是為什麼匯入資料庫會失敗。
什麼會這樣?
目前的 DVWA 版本可能是新版,已經不再使用 database.sql,而是改用其他資料庫格式(像是 SQLite、PostgreSQL 等)。但預設 DVWA 還是使用 MySQL/MariaDB,
確認是否有正確下載 DVWA 官方 GitHub 的版本
是否有完整的 setup.php 流程來建立資料表
重新下載 DVWA(確保是完整版本)
bash
cd /var/www/html
sudo rm -rf DVWA
sudo git clone https://github.com/digininja/DVWA.git
sudo chown -R www-data:www-data DVWA
sudo chmod -R 755 DVWA
這樣你會拿到包含 database.sql 的版本。
確認 config.inc.php 設定為使用 MySQL
打開 /var/www/html/DVWA/config/config.inc.php,確認這幾行:
php
$_DVWA[ 'db_server' ] = '127.0.0.1';
$_DVWA[ 'db_database' ] = 'dvwa';
$_DVWA[ 'db_user' ] = 'dvwa';
$_DVWA[ 'db_password' ] = 'dvwa';
3. 重新啟動 Apache 和 MySQL
bash
sudo service apache2 restart
sudo service mysql restart
程式碼
http://127.0.0.1/DVWA/setup.php
點選「Create / Reset Database」,這次應該就能成功建立資料表了 🎯
已經成功重新下載了完整的 DVWA 原始碼,並正確設定了權限:
bash
sudo chown -R www-data:www-data DVWA
這一步非常關鍵,因為它讓 Apache 能夠正確讀取和執行 DVWA 的檔案。
下一步檢查清單(確保一切就緒)
確認 config.inc.php 設定正確:
打開 /var/www/html/DVWA/config/config.inc.php,確認這幾行:
php
$_DVWA[ 'db_server' ] = '127.0.0.1';
$_DVWA[ 'db_database' ] = 'dvwa';
$_DVWA[ 'db_user' ] = 'dvwa';
$_DVWA[ 'db_password' ] = 'dvwa';
重新啟動 Apache 和 MySQL:
bash
sudo service apache2 restart
sudo service mysql restart
打開瀏覽器,輸入:
程式碼
http://127.0.0.1/DVWA/setup.php
點選「Create / Reset Database」按鈕,這次應該就能順利建立資料表!
如果你還是看到空白畫面,我可以幫你:
檢查 Apache 錯誤日誌
手動匯入 database.sql
測試登入頁面是否可用
已經打開了 nano 編輯器,但目前看起來你可能是打開了 /var/www/html/DVWA/ 這個資料夾,而不是具體的設定檔 config.inc.php。這就是為什麼畫面看起來空白。
正確打開方式:
在終端機輸入這一行:
bash
sudo nano /var/www/html/DVWA/config/config.inc.php
這樣就會直接打開 DVWA 的設定檔,而不是整個資料夾。
🔍 編輯時請確認這幾行:
php
$_DVWA[ 'db_server' ] = '127.0.0.1';
$_DVWA[ 'db_database' ] = 'dvwa';
$_DVWA[ 'db_user' ] = 'dvwa'; // 或 'root',看你用哪個帳號
$_DVWA[ 'db_password' ] = 'dvwa'; // 或 'p@ssw0rd',看你設定的密碼
如果你是用 root 登入 MariaDB,就把 db_user 和 db_password 改成對應的值。
儲存方式(nano 編輯器)
編輯完後按下:Ctrl + O(儲存)
然後按 Enter(確認檔名)
最後按 Ctrl + X(離開)
現在的狀況是:
資料庫 dvwa 已經存在
使用者 dvwa@localhost 嘗試建立時出現錯誤:ERROR 1396 (HY000): Operation CREATE USER failed
這表示該使用者可能已經存在但沒有權限,或是建立過但沒有正確清除。
✅ 解法:先刪除再重新建立
請在 MariaDB 裡執行以下指令:
sql
DROP USER IF EXISTS 'dvwa'@'localhost';
CREATE USER 'dvwa'@'localhost' IDENTIFIED BY 'dvwa';
GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa'@'localhost';
FLUSH PRIVILEGES;
這會:
刪除舊的 dvwa 使用者(如果存在)
建立新的使用者並設定密碼
給予完整權限
更新權限設定