導航:首頁 > 程序命令 > mysql修復資料庫命令

mysql修復資料庫命令

發布時間:2022-09-01 16:02:29

① 如何修復MySQL資料庫表

本章將繼上篇文章中檢查出表的問題後,告訴你如何修復表。 標簽:修復數據表 表 Mysql資料庫 一張損壞的表的症狀通常是查詢意外中斷並且你能看到例如這些錯誤: ◆「tbl_name.frm」被鎖定不能改變。 ◆ 不能找到文件「tbl_name.MYI」(Errcode :### )。 ◆ 從表處理器的得到錯誤###(此時,錯誤135是一個例外)。 ◆ 意外的文件結束。 ◆ 記錄文件被毀壞。 在這些情況下,你必須修復表。表的修復是一項非常困難的工作,很多情況下令人束手無策。然而,有一些常規的知道思想和過程,可以遵循它們來增加修正表的機會。通常,開始是可以用最快的修復方法,看看能否袖珍故障。如果發現不成功,可以逐步升級到更徹底的但更慢的修復方法。如果仍舊難以修復,就應該從備份中恢復了。在上一章已經詳細介紹了這一部分內容。 簡單安全的修復 為了修復一個表執行下列步驟: ◆ 首先,用--recover,-r選項修正表,並且用--quick,-q選項,來只根據索引文件的內容進行恢復。這樣不接觸數據文件來修復索引文件。(-r意味著「恢復模式」) myisamchk -r -q tbl_name isamchk -r -q tbl_name ◆ 如果問題仍舊存在,則忽略--quick選項,允許修復程序修改數據文件,因為這可能存在問題。下面的命令將從數據文件中刪除不正確的記錄和已被刪除的記錄並重建索引文件: myisamchk -r tbl_name isamchk -r tbl_name ◆ 如果前面的步驟失敗,使用。安全恢復模式使用一個老的恢復方法,處理常規恢復模式不行的少數情況(但是更慢)。 myisamchk --safe-recover tbl_name isamchk --safe-recover tbl_name 困難的修理 如果在索引文件的第一個16K塊被破壞,或包含不正確的信息,或如果索引文件丟失,你只應該到這個階段 。在這種情況下,創建一個新的索引文件是必要的。按如下這樣的步驟做: ◆ 定位到包含崩潰表的資料庫目錄中 ◆ 把數據文件移更安全的地方。 ◆ 使用表描述文件創建新的(空)數據和索引文件: shell> Mysql db_name Mysql> DELETE FROM tbl_name; Mysql> quit 上述語句將重新創建新的空表,並使用表的的描述文件tbl_name.frm重新生成新的數據和索引文件。 ◆ 將老的數據文件拷貝到新創建的數據文件之中。(不要只是將老文件移回新文件之中;你要保留一個副本以防某些東西出錯。) ◆ 在使用標準的修復方法。現在myisamchk -r -q應該工作了。(這不應該是一個無限循環)。 如果你擁有表的備份文件,那麼一切過程就容易的多。從備份文件中可以恢復表的描述文件,然後在檢查表,有可能還要繼續使用標準的修復方法,應該糾可以解決問題了。 非常困難的修復 只有描述文件也破壞了,你才應該到達這個階段。這應該從未發生過,因為在表被創建以後,描述文件就不再改變了。 從一個備份恢復描述文件並且回到階段2。你也可以恢復索引文件並且回到階段1。對於後者,你應該用myisamchk -r啟動。 如果因為某種原因,數據的備份文件丟失或者沒有備份文件,但是你還記得建立表的CREATE TABLE語句,那麼太好了,這樣還是可以恢復索引文件: ◆ 定位到包含崩潰表的資料庫目錄中 ◆ 把數據文件移更安全的地方。再把資料庫目錄中的對應的目錄刪去.。 ◆ 調用Mysql並發復CREATE TABLE語句建立該表。 ◆ 退出Mysql,將原始的數據文件和索引文件移回到資料庫的目錄中,替換剛才新建的文件。 ◆ 然後回到階段2,修復表。也可以只移回數據文件,這樣保留新的描述和索引文件,然後回到階段1,繼續用標準的方法修復表。

② 如何修復MySQL資料庫

1.先在運行中輸入CMD,啟動命令行.
2.進入Mysql的Bin目錄:E:\Program Files\MySQL\MySQL Server 5.0\bin,如果不知道如何進入別的目錄,就要參考網上的資料補習基礎知識了.
常見方式:
運行 E:
運行 CD "E:\Program Files\MySQL\MySQL Server 5.0\bin"
3.運行:mysqlcheck -A -o -r -uroot -p888888
注意,將888888改成你自己的root用戶密碼
mysql.columns_priv OK
mysql.db OK
mysql.func OK
mysql.help_categoryOK
mysql.help_keyword OK
mysql.help_relationOK
mysql.help_topic OK
mysql.host OK
mysql.tables_privOK
mysql.time_zoneOK
mysql.time_zone_leap_secondOK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_typeOK
mysql.user OK
......
......
......
注意!

linux系統mysql怎麼還原

你說的還原,指有備份的還原,下面是你做過備份的恢復:
如我們要備份mysql中已經存在的名為linux的資料庫,要用到命令mysqlmp
命令格式如下:
[root@linuxsir01 root]# mysqlmp -u root -p linux > /root/linux.sql
Enter password:在這里輸入資料庫的密碼

通過上面的命令,我們要明白兩件事,首先備份資料庫是要以資料庫管理員的身份備份;其次:備份目的地是/root,備份的文件名是linux.sql。其實備份的位置和文件名,根據自己的情況來定。文件名可以自己來取,路徑也可以自己來安排;
比如我想把linux的資料庫備份到/home/beinan,資料庫的文件名為linuxsir031130.sql,所以應該輸入如下的命令。

[root@linuxsir01 root]#mysqlmp -u root -p linux > /home/beinan/linuxsir031130.sql
Enter password:在這里輸入資料庫管理員root的資料庫密碼

如果數據量大會佔用很大空間,這時可以利用gzip壓縮數據,命令如下:

#mysqlmp -u root -p tm | gzip > tm_050519.sql.gz

這樣我們到/home/beinan目錄下就能發現mysql中名為linux的資料庫的備份文件linuxsir031130.sql
綜上所述,我們學習時要學會變通。

恢復:
首先我們還是要操作上面幾個過程,比如添加資料庫管理員(如果您沒有添加過mysql資料庫管理員的話),創建資料庫等。
比如我們要把在/home/beinan這個目錄中的linuxsir031130.sql這個備份,導入名為linux的資料庫中,應該如下操作;
[root@linuxsir01 root]#mysql -u root -p linux < /home/beinan/linuxsir031130.sql
Enter password:在這里輸入密碼

如果機器好,資料庫比較小,幾分鍾就好了。

如何導出資料庫表的數據?(不同於備份哦)

#mysql

(#mysql>use linux;)#可有可無

#mysql>select * from linux.table-name into outfile "/home/table-name.txt";

#/home/table-name.txt 可能會報錯,如果這樣去掉/home直接"table-name.txt"

默認保存在/var/lib/mysql/table-name.txt

對mysql資料庫常用命令的一點補充;

幾個常用的mysql相關的管理命令
mysql 命令:基本文本的,顯示和使用的mysql資料庫。前面已經簡單的提過用法;比如登錄等。
mysqladmin 命令,用來創建和維護mysql資料庫的命令,前面已經簡單的提過;
isamchk 是用來修復、檢查和優化.ism後綴的資料庫文件;
mysqlmp 是用於備份資料庫,前面已經簡單的說明過;
myisamchk 用來修復.myi後綴的資料庫文件;

比如我們要檢查名為linux的資料庫.myi資料庫表是否存在問題,應該用下面的命令;

要把mysqld伺服器停下來
[root@linuxsir01 root]# /opt/mysql/share/mysql.server stop

然後執行
[root@linuxsir01 root]# /opt/mysql/bin/myisamchk /opt/mysql/var/linux/*.MYI

上面的命令的意思就是檢查所有的.myi文件,資料庫的目錄在/opt/mysql/var/linux/目錄中

如果有問題,應該用-r參數來修復
[root@linuxsir01 root]# /opt/mysql/bin/myisamchk -r /opt/mysql/var/linux/*.MYI

7]mysqlshow 命令:顯示用戶選擇的資料庫和表
[root@linuxsir01 root]# /opt/mysql/bin/mysqlshow -uroot -p [資料庫名]

比如我要查看名為linux的資料庫;應該是:

[root@linuxsir01 root]# /opt/mysql/bin/mysqlshow -uroot -p linux

④ 怎樣修復已經損壞的SQL資料庫

1.停止SQL Server的服務,備份SQL Server安裝目錄下的\data子目錄
下故障資料庫的兩個文件,一個數據文件hbposv6_branch_data.mdf,
一個hbposv6_branch_log.ldf(也有可能非此命名),同時查看磁碟
空間是否有足夠的空間;

2.啟動SQL Server服務(如已停止),創建一個新的資料庫,命名為
原來資料庫的名字。
3.停止SQL Server
4.把老資料庫的MDF文件(hbposv6_branch_data.mdf)替換
新資料庫的相應的MDF文件,
並把LDF文件(hbposv6_branch_log.ldg)刪除。
5.重新啟動SQL Server服務,然後運行如下命令:

Use Master
go

sp_configure 'allow updates', 1
reconfigure with override
go

begin tran
update sysdatabases set status = 32768 where name = 'hbposv6_branch'
--Verify one row is updated before committing
commit tran
go

6.停止SQL然後重新啟動SQL Server服務,然後運行如下命令
(更換日誌文件路徑地址):

use master
go
DBCC TRACEON(3604)
DBCC REBUILD_LOG
('hbposv6_branch',
'c:\Program Files\Microsoft SQL Server\MSSQL\Data\hbposv6_branch_log.ldf')
--在這里,請輸入你的資料庫的路徑
go

7.停止SQL然後重新啟動SQL Server服務,然後運行:

use master
go
update sysdatabases set status = 8 where name = 'hbposv6_branch'
go

sp_configure 'allow updates', 0
reconfigure with override
go

8.運行dbcc checkdb(db_name) 檢查資料庫的完整性

9.修復數庫
--請在查詢分析器中執行下列語句.執行前斷開其它
所有資料庫連接,最好是斷開網線
--如果不是該資料庫名,請將資料庫
--hbposv6_branch
--改為要修復的資料庫

USE master
Go
--單用戶模式
EXEC sp_dboption 'hbposv6_branch', 'single user', 'TRUE'
go
--資料庫檢查
DBCC CHECKDB ('hbposv6_branch')
Go
--如果返回結果出現了紅色的提示文字,說明資料庫中存在錯誤,需要修復
--資料庫修復
DBCC CHECKDB ('hbposv6_branch','repair_rebuild')
Go
--再次資料庫檢查,如果返回結果中沒有了紅色的提示文字,
說明修復成功;
DBCC CHECKDB ('hbposv6_branch')
Go
--否則意味著還需要更高級別的修復;嘗試將上面修復語句的
'repair_rebuild'換為'repair_allow_data_loss'再試,
之後再次檢查資料庫。
--如果還有錯誤未修復,請把這些信息以文字的方式發給我們

--退出前請一定要執行以下語句返回到多用戶模式
EXEC sp_dboption 'hbposv6_branch', 'single user','FALSE'
go

註:都要把 dbname 替換成真實的資料庫名字。

⑤ MySql登陸密碼忘記了 怎麼辦

如果不是root密碼:
連root的密碼也忘記了嗎?
沒有的話,用root進去,修改mysql資料庫user表咯。

如果是root密碼:

方法一:
MySQL提供跳過訪問控制的命令行參數,通過在命令行以此命令啟動MySQL伺服器:
safe_mysqld --skip-grant-tables&
即可跳過MySQL的訪問控制,任何人都可以在控制台以管理員的身份進入MySQL資料庫。
需要注意的是在修改完密碼以後要把MySQL伺服器停掉重新啟動才會生效

方法二:
可以進行如下的步驟重新設置MySQL的root密碼:
1.首先確認伺服器出於安全的狀態,也就是沒有人能夠任意地連接MySQL資料庫。
因為在重新設置MySQL的root密碼的期間,MySQL資料庫完全出於沒有密碼保護的
狀態下,其他的用戶也可以任意地登錄和修改MySQL的信息。可以採用將MySQL對
外的埠封閉,並且停止Apache以及所有的用戶進程的方法實現伺服器的准安全
狀態。最安全的狀態是到伺服器的Console上面操作,並且拔掉網線。
2.修改MySQL的登錄設置:
# vi /etc/my.cnf
在[mysqld]的段中加上一句:skip-grant-tables
例如:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-name-resolve
skip-grant-tables
保存並且退出vi。
3.重新啟動mysqld
# /etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
4.登錄並修改MySQL的root密碼
# /usr/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 3.23.56
Type 『help;』 or 『\h』 for help. Type 『\c』 to clear the buffer.
mysql> USE mysql ;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> UPDATE user SET Password = password ( 『new-password』 ) WHERE User = 『root』 ;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 2 Changed: 0 Warnings: 0
mysql> flush privileges ;
Query OK, 0 rows affected (0.01 sec)
mysql> quit
Bye
5.將MySQL的登錄設置修改回來
# vi /etc/my.cnf
將剛才在[mysqld]的段中加上的skip-grant-tables刪除
保存並且退出vi。
6.重新啟動mysqld
# /etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
windows
1.以系統管理員身份登陸系統。
2.打開cmd—–net start 查看mysql是否啟動。啟動的話就停止net stop mysql.
3.我的mysql安裝在d:\usr\local\mysql4\bin下。
4.跳過許可權檢查啟動mysql.
d:\usr\local\mysql4\bin\mysqld-nt –skip-grant-tables
5.重新打開cmd。進到d:\usr\local\mysql4\bin下:
d:\usr\local\mysql4\bin\mysqladmin -uroot flush-privileges password 「newpassword」
d:\usr\local\mysql4\bin\mysqladmin -u root -p shutdown 這句提示你重新輸密碼。
6.在cmd里net start mysql
7.搞定了。
2,MySQL4.1以上版本一種密碼錯誤問題的解決方法
1 # SET PASSWORD FOR 』some_user』@』some_host』 = OLD_PASSWORD(『newpwd』);
2 # FLUSH PRIVILEGES;
3,Mysql資料庫修復
myisamchk -r -q d:\mysql\data\latin1\*
r代表修復
q代錶快速
d:\mysql\data\latin1\*資料庫裡面 *代表裡面的所有的文件

方法三:
如果你忘記了你的MYSQL的root口令的話,你可以通過下面的過程恢復。
1. 向mysqld server 發送kill命令關掉mysqld server(不是 kill -9),存放進程ID的文件通常在MYSQL的資料庫所在的目錄中。
kill `cat /mysql-data-directory/hostname.pid`
你必須是UNIX的root用戶或者是你所運行的SERVER上的同等用戶,才能執行這個操作。
2. 使用`--skip-grant-tables' 參數來啟動 mysqld。
3. 使用`mysql -h hostname mysql'命令登錄到mysqld server ,用grant命令改變口令。你也可以這樣做:`mysqladmin -h hostname -u user password 'new password''。
(其實也可以用use mysql; update user set password =password('yourpass') where user='root' 來做到。)
4. 載入許可權表: `mysqladmin -h hostname flush-privileges' ,或者使用 SQL 命令`FLUSH PRIVILEGES'。(當然,在這里,你也可以重啟mysqld。)

方法四:(一定要先備份)
1,重新在另一台電腦上安裝相同版本的MySQL
2,刪除忘記密碼的電腦中MySQL安裝目錄中\data\mysql的全部內容(要先停止MySQL服務)
3,Copy新裝的電腦上MySQL安裝目錄中\data\mysql的全部內容 to 剛剛刪除的目錄中
4,啟動MySQL服務

這樣就只有一個root用戶了,密碼為空……

⑥ Linux 如何修復損壞的MySQL資料庫

由於斷電或非正常關機而導致MySQL資料庫出現錯誤是非常常見的問題。MySQL分別針對不同的數據表類型提供了多個數據檢測恢復工具,這些工具是:myisamchkisamchk其中myisamchk適用於MYISAM類型的數據表,而isamchk適用於ISAM類型的數據表。這兩條命令的主要參數相同,一般新的系統都使用MYISAM作為預設的數據表類型,這里以myisamchk為例子進行說明。當發現某個數據表出現問題時可以使用: myisamchk tablename.MYI 進行檢測,如果需要修復的話,可以使用: myisamchk -of tablename.MYI 關於myisamchk的詳細參數說明,可以參見它的使用幫助。需要注意的時在進行修改時必須確保MySQL伺服器沒有訪問這個數據表,保險的情況下是最好在進行檢測時把MySQL伺服器Shutdown掉。 另外可以把下面的命令放在你的rc.local裡面啟動MySQL伺服器前: [ -x /tmp/mysql.sock ] && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI 其中的/tmp/mysql.sock是MySQL監聽的Sock文件位置,對於使用RPM安裝的用戶應該是/var/lib/mysql/mysql.sock,對於使用源碼安裝則是/tmp/mysql.sock可以根據自己的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL資料庫存放的位置。 需要注意的時,如果你打算把這條命令放在你的rc.local裡面,必須確認在執行這條指令時MySQL伺服器必須沒有啟動!

閱讀全文

與mysql修復資料庫命令相關的資料

熱點內容
華為手機代碼編程教學入門 瀏覽:762
和彩雲沒會員怎樣解壓 瀏覽:634
androidimageview保存 瀏覽:387
新買店鋪什麼伺服器 瀏覽:883
文件夾能直接刻錄嗎 瀏覽:493
androidxmpp刪除好友 瀏覽:969
javac哪個前景好 瀏覽:426
中華英才網app為什麼不能搜索了 瀏覽:660
伺服器域名是什麼意思 瀏覽:52
Linux導出mysql命令 瀏覽:159
無詐建鄴是什麼app 瀏覽:228
python中的雙色球 瀏覽:166
python解釋器里如何換行 瀏覽:410
python編寫格式 瀏覽:574
用python做出來的軟體 瀏覽:469
伺服器指示燈代表什麼 瀏覽:702
做一個單片機銷售需要知識 瀏覽:777
怎樣去連接加密wifi 瀏覽:682
有什麼app自帶拍攝模板的 瀏覽:435
登錄相親網為什麼要下載app呢 瀏覽:545