Category: MySQL
在 RHEL 及 CentOS 7 開始, 預設的資料庫系統是 MariaDB, 基本上 MariaDB 可以取代 MySQL, 但如果仍然想繼續用 MySQL 的話, 除了可以編譯 MySQL Community Server 的原始碼外, 也可以安裝 Oracle 提供的官方 YUM repository, 那便可以透過 Yum 安裝 MySQL …
RHEL 7 開始, MariaDB 會取代 MySQL 成為預設的資料庫系統, 以下是安裝方法: yum install mariadb-server mariadb 只要輸入以上指令就可以透過 yum 安裝 mariadb server 及 client, 現在開啟 MariaDB Server: systemctl start mariadb.service 設定開機自動開啟 MariaDB Server: systemctl …
如果開啟了 MySQL binary log, 在 MySQL 資料目錄裡面會有很多這樣的檔案: mysql-bin.000001 mysql-bin.000002 mysql-bin.000003 mysql-bin.000004 mysql-bin.000005 MySQL 在預設情況下不會刪除舊 binary log, 可以透過設定 my.cnf 進行日誌輪替, 開啟 my.cnf, 加入這一行在 區塊內: expire_logs_days = 14 expire_logs_days 是指定 binary …
現在很多地方都用上資料庫系統, 有一些是檢查用戶名稱及密碼的登入系統, 但如果沒有對用戶輸入進行過濾, 會有很多潛在危除, 例如以下程式碼: my $sth = $dbh->prepare(“select * from user where user=’$user’ and pass=’$pass'”); 以上這句 SQL 會檢索 user 資料表, 找出 user 及 pass 與用戶輸入匹配的紀錄, 有回傳便可以登入, 沒有回傳便登入失敗, 這個很容易理解。但如果用戶的輸入包括了一些特定的 …
在 Perl 要連接資料庫可以使用 DBI module, DBI module 支援多種資料庫系統, 例如 DB2, MS SQL Server, Oracle, SQLite, PostgreSQL, Firebird 及 MySQL。只要在程式宣告使用 DBI module, 用 Perl 連接 MySQL 便會跟 PHP 一樣簡單, 以下是使用例子:
MySQL 的備份可以透過直接複製 MySQL 資料庫目錄(冷備份),或者用 mysqldump 匯出資料庫的完整 SQL 語句實現(熱備份),以下是兩種方法的優/缺點,以及實現方法: 冷備份 這種方法最大的好處是簡單,備份只要直接複製資料庫目錄,還原則只要將備份目錄抄回原來位置便可以,而且速度會較快。但缺點是冷備份時必須要關閉 MySQL,如果 MySQL 在執行時進行冷備份,備份檔可能會有不完整及損毀的情況,以下是冷備份步驟: 1. 關閉 MySQL: # /etc/rc.d/init.d/mysqld stop 2. 把 MySQL 的資料目錄(包括 ibdata1, ib_logfile0, ib_logfile1 等)完整複製到另一個硬碟裡面。 3. 開啟 …
MySQL 在 5.1 版本開始預設沒有支援 InnoDB, 如果用 yum 安裝的話, Redhat 會處理好 InnoDB 支援, 但如果自行編譯安裝的話, 便需要作出一點改動。以前我編譯 MySQL 會用以下參數編譯: 這樣會安裝 MySQL 到 /usr/local/mysql51, 並安裝所有額外的 charsets, 如果要在 MySQL 5.1 後支援 InnoDB, 需要加入支援 InnoDB …
要對 MySQL 資料庫內的資料替換字串,可以借助 PHP 的 str_replace(),但這實在太麻煩了,其實MySQL 已內建了這個功能,以下語句可以將 資料表的 欄位作 replace 動作, 是搜索字串; 是替換字串。 update set =replace(,’‘,’‘); 如果不想將整個資料表的欄位資料更換,可以在最後用 where 做條件選擇,例如: update set =replace(,’‘,’‘) where zip=’852′; 以上語句跟第一句的分別是,第二句只會對欄位 “zip” 為 “852″ 的紀錄作更改。
最近要更新 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 …
有時我們需要將不同欄位的資料連接,或者在現在的資料後面加入內容,當然可以先從 MySQL 匯出資料,再把連接好的字串更新到 MySQL,但這未免太麻煩,另一個較方便的方法是借助 CONCAT() 實現,CONCAT() 語法為: CONCAT(string_1, string_2, string_3, …) MySQL 的 CONCAT() 支援多個字串連接,但在 Oracle 裡面只可以有兩個參數,要實現多個字串連接可以用 ‘||’ 來實現。以下是 CONCAT() 的使用實例: update table_name set email=CONCAT(email, ‘:me@email.com’) where id=’1′; 以上 …