1.1 實驗環境
操作系統:CentOS6.7
虛擬機:VMware Workstation
數據庫系統:mysql-5.6.15.tar.gz
1.2 實驗背景
從MySQL5.5版本開始,MySQL源碼安裝的編譯工具由configure開始向cmake過渡,安裝方式和MySQL5.5之前的版本略有不同。在這裏簡單小結下。
源碼編譯安裝最容易出錯,也是最耗時間。sky建議初學者學會一種方式之後,嘗試應用多種方式安裝。
安裝之前,最好檢查一些基礎軟件,例如 make, GCC, Perl,libncurses5-dev,cmake-2.8.5, ncurses-devel是否都已經安裝,如果沒有安裝,用yum -y install gcc gcc-c++ make cmake bison ncurses-devel安裝補全,否則在編譯和安裝時報錯。
1.3 安裝Cmake
#進入源代碼目錄
[root@localhost src]# cd /usr/local/src
#下載安裝文件
[root@localhost src]# wgethttp://wwwNaNake.org/files/v2.8/cmake-2.8.5.tar.gz
#解壓縮
[root@localhost src]# tar zxvfcmake-2.8.5.tar.gz
#安裝
[root@localhost src]# cd cmake-2.8.5
[root@localhost src]#./bootstrap
[root@localhost src]# gmake
[root@localhost src]# gmake install
#退回源代碼目錄
cd ../
1.4 cmake簡介
CMake 是"cross platform make"的縮寫。它是一個跨平臺的安裝(編譯)工具,可以用簡單的語句來描述所有平臺的安裝(編譯過程)。他能夠輸出各種各樣的makefile或者project文件,能測試編譯器所支持的C++特性,類似UNIX下的automake。
和之前configure的語法對比如下
安裝選項的對比如下:
1.5 安裝bison-2.5
#下載安裝文件
[root@localhost src]# wgethttp://ftp.gnu.org/gnu/bison/bison-2.5.tar.gz
#解壓縮
[root@localhost src]# tar zxvfbison-2.5.tar.gz
#安裝
[root@localhost src]# cd bison-2.5
[root@localhost src]#./configure
[root@localhost src]# make
[root@localhost src]# make install
#退回源代碼目錄
cd ../
1.6 Mysql安裝
#創建mysql用戶和組
[root@localhost src]# /usr/sbin/groupaddmysql
[root@localhost src]# /usr/sbin/useradd-g mysql mysql
[root@localhost src]# mkdir/usr/local/mysql #建立數據庫目錄
[root@localhost src]# mkdir/usr/local/mysql/data #建立數據庫文件夾
#取源代碼放到目錄下/usr/local
#解壓縮進入安裝目錄
[root@localhost src]# tar xvf mysql-5.5.27.tar.gz
[root@localhost src]# cd mysql-5.5.27
#編譯
[root@localhost mysql]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\
-DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_USER=mysql
#安裝
[root@localhost mysql]## make&&makeinstall
1.7 安裝後
1.7.1 鏈接文件
ln -s /usr/local/mysql/lib/libmysqlclient.so.18/usr/lib64/
#不執行這一步,運行時可能會出現如下錯誤
error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
1.7.2 設置PATH環境變量
Vi /etc/profile
#在profile最後加上
export PATH=”/usr/local/mysql/bin:$PATH”
#保存後
source /etc/profile
1.7.3 配置參數文件
cd support-files
cp my-large.cnf /etc/my.cnf
#編輯my.cnf,加入以下內容或是在原有路徑上修改如下:
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
log-error = /usr/local/mysql/data/mysql_error.log
pid-file = /usr/local/mysql/data/mysql.pid
socket =/usr/local/mysql/data/mysql.socket //如果已經有,則修改目錄爲mysql的數據目錄,此處是/usr/local/mysql/data
1.7.4 設置權限
[root@localhost mysql]# cd /usr/local/mysql
[root@localhost mysql]# chown –R mysql . #注意mysql後空格後加點,修改權限。
[root@localhost mysql]# chgrp –R mysql . #注意mysql後空格後加點,修改權限。
1.7.5 mysql 初始化安裝
cd /usr/local/mysql/
[root@localhost mysql]# scripts/mysql_install_db\
--defaults-file=/etc/my.cnf \
--basedir=/usr/local/mysql \
--user=mysql \
--force
如果產生錯誤like:‘WARNING: The host '***' could not be looked up with resolveip’
執行時加上 –force 選項
1.7.6 修改權限
#將安裝目錄所有權改爲root,數據目錄的所有權改爲你運行mysqld的用戶
cd /usr/local/mysql
[root@localhost mysql]# chown -R root . #注意root後空格加點。
[root@localhost mysql]# chown -R mysqldata
1.8 配置服務
#配置服務
cd /usr/local/mysql/support-files
[root@localhost support-files]# cpmysql.server /etc/init.d/mysqld
[root@localhost support-files]# chmod+x /etc/init.d/mysqld
[root@localhost support-files]# chkconfig --add mysqld #開機自動啓動
[root@localhost support-files]# chkconfig --level 345 mysqld on
1.9 啓動與停止 mysql
[root@localhost ~]# service mysqldstart
Starting MySQL SUCCESS!
[root@localhost ~]# service mysqld stop
Shutting down MySQL... SUCCESS!
1.10 設置Mysql用戶賬號密碼
mysql安裝後默認生成兩個帳號:一個是root,未設置密碼,可以從本機登錄到mysql;另一個是匿名帳號,無帳號名、無密碼,可以從本機登錄,未提供用戶名的連接都將假定爲此帳號。這樣的設置存在着安全隱患,按下面的步驟進行更改。
1) 修改root的密碼
執行命令:/usr/local/mysql/bin/mysqladmin–u root –p舊密碼 password 新密碼或者用root登錄數據庫
# mysql –u root
登錄以後執行
Mysql>set password for ‘root’@’hostname’=password(‘新密碼’);
或者執行
Mysql>update mysql.user setpassword=password(‘新密碼’)
—>where user = ‘root’ and host =’hostname’;
如果不知道hostname,可先執行select host,user from mysql.user where user=’root’
2)刪除匿名用戶
Root 登錄後執行
mysql> delete from mysql.user where user=’’ ; 刪除用戶名爲空的記錄
mysql> delete from mysql.user where password=’’ ; 刪除密碼爲空的記錄
3) 修改完用戶權限以後,執行
Mysql> flush privileges;
因爲MySQL啓動後,所有用戶權限都是加載到內存中的;但有些權限更新操作不會刷新到內存中,這樣只有下次啓動時才生效,如果直接update mysql.user來修改密碼等;flush privileges 強制讓MySQL重新加載權限,這樣剛纔修改的就馬上生效了。
小結:IT技術更新好快,如果要做好一個運維專家,學的東西太多了,就例如我們上面的例子,僅是一個升級版本,對運維技術人員來說,又要花上幾個小時研究一下。