環境:CentOS7,MySQL5.5
1.MySQL5.5源碼下載
Oracle的網站打開較慢,http://mirrors.sohu.com/mysql/這里提供了MySQL的鏡像。一般的,Linux的程序安裝有兩種方式:A利用RPM,YUM等工具 B手動安裝。其中手動安裝又有兩種方式,一種是直接下載已經編譯好的二進制文件,另一種是下載源碼手動編譯。我們這里嘗試下載源碼手動編譯的方式。
如何區分下載文件列表的文件是已編譯好的二進制文件,還是源碼文件:
A.文件大小。由於從源碼編譯為二進制文件,會利用到一些靜態鏈庫。因此一般的源碼文件比編譯好二進制文件要小。
B.文件名。因為不同的平台編譯出的二進制文件不一樣,因此一般的編譯好的二進制文件的包名里會明確寫出該包適用的平台。例如mysql-5.5.40-linux2.6-x86_64.tar.gz。而源碼一般不會這樣寫。
C.將下載的文件解包后,如果有bin文件夾,一般可以說明該文件包是編譯好的二進制文件。
2.編譯源碼
- MySQL從5.5開始使用cmake 編譯工具。首先安裝cmake:yum install cmake
- 創建一個MySQL用戶
-
1 #groupadd mysql 2 #useradd -g mysql mysql
- 解包:在/usr/local/src下將tarball解開
-
1 #tar -zxvf mysql-5.5.14.tar.gz
- 構建Makefile文件
-
1 #cd mysql-5.5.14/ 2 #cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.5 \ 3 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ 4 -DDEFAULT_CHARSET=utf8 \ 5 -DDEFAULT_COLLATION=utf8_general_ci \ 6 -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \ 7 -DWITH_MYISAM_STORAGE_ENGINE=1 \ 8 -DWITH_INNOBASE_STORAGE_ENGINE=1 \ 9 -DWITH_MEMORY_STORAGE_ENGINE=1 \ 10 -DWITH_READLINE=1 \ 11 -DENABLED_LOCAL_INFILE=1 \ 12 -DMYSQL_DATADIR=/var/mysql/data \ 13 -DMYSQL_USER=mysql 14 -DSYSCONFDIR=/etc # mysql配置文件 my.cnf的存放地址,默認為/etc下 15 -DMYSQL_TCP_PORT=3306 # 數據庫服務器監聽端口,默認為3306 16 -DWITH_SSL=yes # 支持 SSL 17 -DMYSQL_USER=mysql # 默認為mysql 18 19 //下面3個是數據庫編碼設置 20 -DEXTRA_CHARSETS=all # 安裝所有擴展字符集,默認為all 21 -DDEFAULT_CHARSET=utf8 # 使用 utf8 字符 22 -DDEFAULT_COLLATION=utf8_general_ci # 校驗字符 23 24 //下面5個是數據庫存儲引擎設在 25 -DWITH_MYISAM_STORAGE_ENGINE=1 # 安裝 myisam 存儲引擎 26 -DWITH_INNOBASE_STORAGE_ENGINE=1 # 安裝 innodb 存儲引擎 27 -DWITH_ARCHIVE_STORAGE_ENGINE=1 # 安裝 archive 存儲引擎 28 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 # 安裝 blackhole 存儲引擎 29 -DWITH_PARTITION_STORAGE_ENGINE=1 # 安裝數據庫分區
//在這個過程中,可能會因為缺少某些包而報錯,參照報錯信息用YUM安裝相關的包,然后刪除Makefile.txt,重新構建。這個步驟在錯誤信息中有詳細說明
-
執行安裝
-
1 #make 2 #make install
3.創建數據庫
- 設置配置文件
-
1 #cp support-files/my-medium.ini /etc/my.cnf 2 //MySQL提供了my-small.ini、my-medium.ini、my-large.ini、my-huge.ini幾個文件,根據實際環境選擇合適的文件作為參考 3 4 // Uncomment the following if you are using InnoDB tables 5 #innodb_data_home_dir = /var/mysql5.5/data 6 #innodb_data_file_path = ibdata1:10M:autoextend 7 #innodb_log_group_home_dir = /var/mysql5.5/data 8 9 # default-storage-engine=InnoDB 10 # user = mysql
其他的配置根據實際情況調整,在重啟MySQL后生效
-
創建數據庫
-
1 # ./scripts/mysql_install_db --basedir=/usr/local/mysql5.5 --datadir=/var/mysql5.5/data
2 # export PATH=/usr/local/mysql5.5/bin:$PATH -
啟動/關閉數據庫
1 # ./bin/mysqld_safe &
//說明
A.數據庫在啟動的時候,會打出這樣一個信息:mysqld_safe Logging to '/usr/local/mysql5.5/data/localhost.err
如果數據庫啟動不成功,可以參照這個Log的信息查找具體原因,例如:
/usr/local/mysql5.5/bin/mysqld: File './mysql-bin.000004' not found (Errcode: 13)
這個問題是由文件權限引起的,我們在安裝過程中由於在root和mysql及其它用戶間切來切去,導致mysql用戶沒有正確的權限訪問文件解決方法
#chown -R mysql:mysql /usr/local/mysql5.5 //注意-R的參數
B.即使數據庫正常啟動,A中所說的Log中的某些警告信息同樣具有參考價值2 # ./bin/mysqladmin -u root -p shutdown
-
連接數據庫
-
1 #mysql -h localhost -u root -p
- 編輯PATH。將MySQL的 PATH編輯進系統配置文件
-
1 //對系統的所有用戶都生效 2 #/vi /etc/profile 3 PATH=/usr/local/mysql5.5/bin:$PATH 4 5 //只對當前用戶生效 6 $cd 7 $vi bash_profile 8 PATH=/usr/local/mysql5.5/bin:$PATH
-
發生的一些錯誤
1. 'Access denied for user 'root'@'localhost' (using password: YES)':
發生原因,沒有正確設置root的密碼,如果直接連接數據庫 mysql -u root,並執行select password from user where user='root',
會發現查到的password都為空。在這種情況下,如果不重新設置password,那么可以執行#mysql -h localhost -u root -p,然后在需要輸入密碼的時候,直接回車就可以Login了,因為root的密碼本來就為空。當然,最好還是重新設置一下root密碼。