如何修改WordPress資料表的前綴名稱?

最近在喘息上看到有人要更換資料表的前綴名稱,不過更換前綴名稱其實有點小複雜的說,因為我自己之前也有改,但我是使用SQL語法進行修改,雖然有些複雜,不過這方法還蠻值得推薦使用的!


修改資料表的前綴名稱方法大致上可以分為三種,第一種,透過SQL語法進行修改。第二種,導出資料庫修改。第三種,透過外掛修改。雖然修改的方式很多種,不過動到資料庫可是很危險的事情,一個不小心可能會把網站整個毀掉。所以在做任何修改前,一定要確保所有資料都備份好。

那為什麼要修改資料表的前綴名稱呢?其實這問題之前在高登老爺那邊的留言區就聽過老爺的說法:

有一種叫Zero-day聽過吧,當有一天有人對wp_開頭的資料庫發動攻擊時,你就知道它要幹嘛了,有一個外掛WP Security Scan可以參考看看
(引用自這裡)

不過通常被攻擊機率可能不是很大,因為大多數的使用者安裝應該都是預設,如果要攻擊相信大家應該都垮了吧?不過多一層保護總是好的,我們也來改改資料表的前綴名稱吧!

安裝前就先修改資料表前綴名稱

wp_db_10

網路上很多架設WordPress的教學,不過基本上教學中沒有提告修改資料表的前綴名稱,但是在安裝時就可以修改了!修改的方式有兩種,一種是如上圖,在安裝時改一下最後一個欄位,把原先的「wp_」改成「你要的名稱_」,就可以了。或者是你在安裝,直接修改wp-config.php把裡面的設定:

請找到

$table_prefix  = 'wp_';

改成

$table_prefix  = '你要的名稱_';

然後儲存並上傳就可以了!不過要注意的是,「你要的名稱_」這欄位必須填上英文或數字,然後後面必須要加上「_」(底線),例如「wsf3db_」這樣才可以。

如果你的部落格已經經營好一陣子了,但卻突然想換前綴名稱的話,那可能有些小麻煩,雖然修改方法在文章一開始有提到總共有三種方式,不過看起來似乎都有些麻煩的樣子,不過我會把修改方法大致說明一下,大家可以找看看最適合自己的方式囉!

使用SQL語法修改資料表前綴名稱

在不久之前,我才修改過資料表的前綴名稱,當時上網爬到的方式都是使用SQL語法來進行,雖然感覺很複雜,但是我比較推薦使用這個,因為我就是使用這方法改,目前仍然正常運作中。

※在做任何修改前,請務必先進行備份※

在修改資料表前綴名稱之前,記得要先進行資料庫的備份,否則網站可能會毀掉,資料庫備份方法可以參考以下兩篇文章。

第1步 先連到空間FTP,把wp-config.php下載回來,開啟後,

請找到

$table_prefix  = 'wp_';

改成

$table_prefix  = '新前綴名稱_';

然後儲存並上傳就可以了!不過要注意的是,「新前綴名稱_」這欄位必須填上英文或數字,然後後面必須要加上「_」(底線),例如「newtable_」這樣才可以。

wp_db_0

第2步 接著進入到您的phpmyadmin,你會看到你的資料庫左方的前綴名稱還是預設的「wp_」,當然這是正常的,因為你還沒進行修改哩XD。

wp_db_1

第3步 點擊上方的【SQL】,然後在下方欄為輸入SQL語法,然後點擊﹝執行﹞。

SQL執行的語法

ALTER TABLE 原前綴名稱_資料表名稱 RENAME TO 新前綴名稱_資料表名稱

舉個例子,如果你要修改「wp_comments」變「newtable_comments」,那你要執行的語法就是:

ALTER TABLE wp_comments RENAME TO newtable_comments

不過要注意的是,「newtable_comments」的「newtable」必須和你在第1步修改wp-config.php時,那時候設定的資料庫前綴名稱一樣,如果不一樣就對應不起來囉!

wp_db_2

第4步 當你執行完SQL語法後,如果成功,畫面就會顯示您已經成功修改的訊息,同時你也會發現你修改的那個資料表名稱變囉!但是你可能發現只有變動一個,沒錯!確實只有變動一個,因為你剛只有執行一次語法,接下來你必須要再重複執行語法,把其它的前綴名稱都改成新的,所以你必須重複第3步,繼續修改你的資料庫前綴名稱,直到左邊的名稱全部變成你要的。

那接下來要執行什麼語法呢?如同第3步的方法,你必須類推出其它語法繼續執行,為了避免大家不太清楚,我們再說明一次。

假設你要修改第二個資料表「wp_links」變成「newtable_links」,那就要執行:

ALTER TABLE wp_links RENAME TO newtable_links

因此,其它語法請大家按照上面提到的方式,參考左邊的資料表名稱,類推出其它的SQL執行語法吧!所以說,如果你資料畫面左方有11個資料表名稱,那你就要來來回回執行11次的SQL語法,直到左邊的開頭名稱都變成你要的名稱。

wp_db_3

第5步 當你全部改完後,你會發現左方全部變成新的囉!這時趕快登入WordPress後台看看有無任何異狀?

wp_db_5

第6步 當你登入後台後,你可能會發現後台出現了錯誤訊息「您沒有足夠的權限以編輯此網誌分頁」或是出現「You do not have sufficient permissions to access this page」,那這該怎麼辦呢?

wp_db_4

第7步 所以請趕快到phpmyadmin中,並點擊上方的【SQL】,然後在下方欄位輸入以下SQL執行語法,並點擊﹝執行﹞。

因為要解決出現「您沒有足夠的全縣以編輯此網誌分頁」或「You do not have sufficient permissions to access this page」的問題,所以我們總共有四串語法要執行,缺一不可。

語法一

update 新前綴名稱_options set option_name = replace(option_name,'wp_user_roles','新前綴名稱_user_roles')

語法二

update 新前綴名稱_usermeta set meta_key = replace(meta_key,'wp_capabilities','新前綴名稱_capabilities')

語法三

update 新前綴名稱_usermeta set meta_key = replace(meta_key,'wp_user_level','新前綴名稱_user_level')

語法四

update 新前綴名稱_usermeta set meta_key = replace(meta_key,'wp_autosave_draft_ids','新前綴名稱_autosave_draft_ids')

請大家把以上的「新前綴名稱_」代換成你在第1步設定的前綴名稱,因為我是把前綴名稱改成「newtable_」,所我就要把「新前綴名稱_」代換成「newtable_」才可以執行語法喔!

wp_db_7

第8步 當執行後,你會發出現「影響列數: 1」,這表是成功修改囉!因為總共有四串語法,請大家依序把剩下的三串語法執行。

wp_db_8

第9步 當執行完成後,到後台看看,是不是可以正常登入呢?

wp_db_9