Category: MySQL / Mariadb

MySQL 資料庫備份及還原

MySQL 的備份可以透過直接複製 MySQL 資料庫目錄(冷備份),或者用 mysqldump 匯出資料庫的完整 SQL 語句實現(熱備份),以下是兩種方法的優/缺點,以及實現方法:冷備份 這種方法最大的好處是簡單,備份只要直接複製資料庫目錄,還原則只要將備份目錄抄回原來位置便可以,而且速度會較快。但缺點是冷備份時必須要關閉 MySQL,如果 MySQL 在執行時進行冷備份,備份檔可能會有不完整及損毀的情況,以下是冷備份步驟:1. 關閉 MySQL:# /etc/rc.d/init.d/mysqld stop2. 把 MySQL 的資料目錄(包括 ibdata1, ib_logfile0, ib_logfile1 等)完整複製到另一個硬碟裡面。3. 開啟 MySQL:# /etc/rc.d/initd/mysql start 這樣就完成了,至於還原的過程同樣簡單,關閉 MySQL 後直接將資料目錄替換原來的目錄,並重啟 …

MySQL 開啟支援 InnoDB

MySQL 在 5.1 版本開始預設沒有支援 InnoDB, 如果用 yum 安裝的話, Redhat 會處理好 InnoDB 支援, 但如果自行編譯安裝的話, 便需要作出一點改動。以前我編譯 MySQL 會用以下參數編譯:這樣會安裝 MySQL 到 /usr/local/mysql51, 並安裝所有額外的 charsets, 如果要在 MySQL 5.1 後支援 InnoDB, 需要加入支援 InnoDB 的參數, 如下:但如果不能重新編譯 …

MySQL 的 Replace 功能

要對 MySQL 資料庫內的資料替換字串,可以借助 PHP 的 str_replace(),但這實在太麻煩了,其實MySQL 已內建了這個功能,以下語句可以將 資料表的 欄位作 replace 動作, 是搜索字串; 是替換字串。update set =replace(,’‘,’‘);如果不想將整個資料表的欄位資料更換,可以在最後用 where 做條件選擇,例如:update set =replace(,’‘,’‘) where zip=’852′;以上語句跟第一句的分別是,第二句只會對欄位 “zip” 為 “852″ 的紀錄作更改。

MySQL 的 Safe Update Mode

最近要更新 MySQL 資料表內其中一個欄位的所有資料,只是用以下這個 SQL 指令:UPDATE table_name SET field_name=0;有個 MySQL 回傳的錯誤訊息為:“You are using safe update mode and you tried to update a table without a WHERE clause that uses a KEY …

MySQL 字串連接

有時我們需要將不同欄位的資料連接,或者在現在的資料後面加入內容,當然可以先從 MySQL 匯出資料,再把連接好的字串更新到 MySQL,但這未免太麻煩,另一個較方便的方法是借助 CONCAT() 實現,CONCAT() 語法為:CONCAT(string_1, string_2, string_3, …)MySQL 的 CONCAT() 支援多個字串連接,但在 Oracle 裡面只可以有兩個參數,要實現多個字串連接可以用 ‘||’ 來實現。以下是 CONCAT() 的使用實例:update table_name set email=CONCAT(email, ‘:[email protected]’) where id=’1′;以上 SQL 語法會更新 table_name 資料表的 email …

MySQL 重設 root 忘記密碼

如果忘記了 MySQL 的 root 密碼,可以用以下方法重新設定:1. 關閉 MySQL 伺服器。2. 用以下指令啟動 MySQL,以跳過檢查權限的資料表mysqld_safe –skip-grant-tables & update mysql.user set password=PASSWORD(“new_password”) where User=’root’; mysql> flush privileges; mysql> quit5. 最後只需重新啟動 MySQL,便可以用新設定的密碼進入了。

MySQL: [ERROR] Unknown character set 問題

早前升級一台主機的 MySQL Server,升級後發現部份資料表無法開啟,報出的錯誤訊息是:Unknown character set: ‘BIG5′出現這個問題的原因是新版本 MySQL 安裝時沒有安裝額外的字集,而對上一個版本的 MySQL 是用 YUM 安裝,所有透過套件工具安裝的 MySQL 也會預設安裝所有字集,解決方法是重新編譯 MySQL 並加上所有的字集的選擇 –with-extra-charsets=complex,編譯語法如下:./configure — prefix=/usr/local/mysql –with-extra-charsets=complex如果在 FreeBSD 遇上這個問題,而 FreeBSD 內的 MySQL 是透過 ports 安裝的話,便要使用 WITH_XCHARSET=all 參數:make …

編譯及安裝 MySQL

雖然在 Unix Like 環境已經有很多預先編譯好的軟件,例如 rpm 及 deb,但我較喜歡使用編譯的方法安裝軟件,尤其是 server,以下是編譯及安裝 MySQL 4.1.18 的方法:1. 到 MySQL Mirror 下載 source code 並儲存到主機上。2. 執行以下指令: 3. MySQL 已經安裝完成,現在需要改變 mysql 目錄的 owner: 4. 執行以上指令後,便可以啟動 MySQL 並更改密碼: 這時應該進入了 …

Python 連接 MySQL

MySQL 是十分流行的開源資料庫系統,很多網站也是使用 MySQL 作為後台資料儲存,而 Python 要連接 MySQL 可以使用 MySQL 模組。MySQLdb 模組可以讓 Python 程式連線到 MySQL server, 執行 SQL 語句及擷取資料等。開始前要確定系統內的 Python 有安裝 MySQLdb 模式,你可以 Python command line interpreter 檢查,在指令模式輸入 python,然後便可以開始檢查:如果見以上面的 “ImportError: No …

MySQL 用戶管理

在安裝 MySQL 後,預設的 root 密碼是空字串,對於系統安全是一個很大的漏洞,本文會介紹如何修改 MySQL 的使用者密碼,以及如何新增/刪除用戶。修改密碼 在 MySQL 內需要修改密碼,可以直接更新 mysql 資料庫內的 user 資料表。你可以在命令模式下輸入: # mysql -u root 或者在 phpmyadmin 內直接輸入以上最後兩句 SQL 語句也可以。新增使用者 要新增 MySQL 使用者有兩個方法:— 在命令模式下使用 GRANT 語句 — …