--
MariaDB 版本 10.3.25 其他版本相關指令、操作不保證成功
--
當遇到 MariaDB 資料庫毀損時,Hoyo 使用了以下步驟恢復運作,此方法使用的是重建 mysql 資料庫的方式,使用者的資料庫必須有備份,等重建完成之後再恢復使用者帳號以及匯入資料庫備份
1 2 3 4 5 6 7 8 9 10 11 |
# mv /var/lib/mysql /var/lib/mysql0 # mysql_install_db # systemctl restart mysql # mysql_secure_installation # mysql -u root -p CREATE USER 'user'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; # mysql -u username -p database_name < file.sql |
這個方法可行是可行,不過 mysql_secure_installation 這個指令需要人工干涉,所以要將流程自動化還需要調整
以下自動化參考了 /usr/bin/mysql_secure_installation 內作法
--
指定 mysql 執行時帳號、密碼
.my.cnf
1 2 3 |
[mysql] user=root password='password' |
--
資料庫整理
刪除匿名帳號以及 test 資料庫,接下來就是自己的使用者帳號以及資料庫
fix.sql
1 2 3 4 5 6 7 8 9 10 |
DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%'; DROP DATABASE IF EXISTS test; FLUSH PRIVILEGES; CREATE DATABASE `table` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci; CREATE USER 'user'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'DAE'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; |
--
重建及匯入
fix.sh
1 |
# chmod +x fix.sh |
- 將資料庫停止服務
- 刪除整個資料庫目錄
- 執行 mysql_install_db 不能加參數,Hoyo 測試的結果是增加參數就無法正常執行
- 啟動資料庫服務
- 修改 root 密碼
- 將剛剛編輯的 fix.sql 匯入
- 解壓縮原先備份資料庫
- 將備份資料庫匯入
1 2 3 4 5 6 7 8 9 |
#!/usr/bin/env bash systemctl stop mysql rm -r /var/lib/mysql mysql_install_db systemctl start mysql mysqladmin -u root password 'password' mysql --defaults-file=/opt/Server/WWW/.my.cnf < /opt/Server/WWW/fix.sql tar zxf /backup/db_backup.tgz -C / mysql --defaults-file=/opt/Server/WWW/.my.cnf table < /backup/db_backup.sql |
--
1,195 total views, 1 views today