MySQL數(shù)據(jù)庫是廣受歡迎的開源關(guān)系型數(shù)據(jù)庫,但對于一些不專業(yè)的數(shù)據(jù)庫管理員來說,可能會意外刪除了數(shù)據(jù)庫,引發(fā)了一系列的問題。
當你意識到你不小心刪掉了一個重要的數(shù)據(jù)庫時,第一步是不要驚慌失措。一旦你恢復冷靜,第二步是嘗試找回你刪除的數(shù)據(jù)。
mysql> USE mysql; mysql> FLUSH PRIVILEGES; mysql> DROP DATABASE dbname; mysql> SHOW DATABASES;
如果你現(xiàn)在看到了一個沒有被刪掉的數(shù)據(jù)庫,那么你還有很大的機會恢復數(shù)據(jù)。下面是步驟:
mysqldump -u [username] -p [database_name] > backup.sql
然后你可以通過將備份文件導入到另一個數(shù)據(jù)庫中來恢復丟失的數(shù)據(jù)庫:
mysql> CREATE DATABASE new_db; mysql> USE new_db; mysql> SOURCE /path/to/backup/file;
如果你運氣不好,沒有備份文件。那么你可以使用軟件工具進行數(shù)據(jù)庫恢復,例如Recuva、Disk Drill、EaseUS Data Recovery Wizard等。
當然,有時候恢復丟失的數(shù)據(jù)庫是不可能的。如果你只能重新開始建立新的數(shù)據(jù)庫時,你需要重構(gòu)你的數(shù)據(jù)庫架構(gòu),創(chuàng)建新表、重新插入數(shù)據(jù)等。
盡管建好數(shù)據(jù)庫并插入數(shù)據(jù)后,你可能會希望保護你的數(shù)據(jù)免受類似的災難的影響。這需要你采取一些預防措施,比如備份數(shù)據(jù)庫,設(shè)置權(quán)限等等。
mysqldump -u [username] -p [database_name] > backup.sql mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'password'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'testuser'@'localhost' WITH GRANT OPTION;
通過這些預防措施,即使你出現(xiàn)了災難性的情況,你也會非常接近于原有數(shù)據(jù)庫,僅僅需要花費一些努力來恢復數(shù)據(jù)。