今天根據需求要在centos6.6上編譯安裝mysql5.5,因爲以前編譯安裝過感覺很簡單,但是今天還是出現了點小問題,所以把過安裝過程總結了一下:
好像從mysql5.5開始編譯安裝mysql需要用到cmake工具進行編譯安裝,既然是編譯安裝,那麼肯定要用到一些依賴的類庫以及相關的編譯工具,所以需要事先安裝相關工具。
一 、編譯安裝
1.安裝mysql編譯過程中所需要的依賴關係以及編譯工具(需要先配置好yum源)
# yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel bison cmake
2.使用yum安裝cmake編譯工具
#yum -y install cmake
3.安裝前需要檢查一下是否安裝mysql,如果有就卸載掉
# rpm -qa | grep mysql
4.下載mysql源碼包,並解壓
# tar xvf mysql-mysql-5.5.35.t15.tar
或者解壓到指定目錄(如:/usr/local)
# tar xvf mysql-mysql-5.5.35.t15.tar -C /usr/local
5.進入到mysql的解壓目錄,使用cmake編譯、安裝
# cd mysql-mysql-5.5.35.t15
1)使用cmake編譯(根據自己的具體要求選擇編譯參數,下邊的選項參數僅供參考)
#cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
2)安裝
#make && make install
稍等一會。。。
6.需要創建mysql用戶和mysql組,並修改mysql安裝目錄的所屬用戶和組
1)創建mysql用戶和mysql組
#groupadd mysql
#useradd -g mysql -s /sbin/nologin mysql
2)修改mysql安裝目錄的所屬用戶和組
#chown -R mysql:mysql /usr/local/mysql
7.進入mysql安裝目錄,執行初始化腳本,創建mysql自帶的數據庫和表
# cd /usr/local/mysql
# cd scripts/
#./mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
8.修改配置文件
# vi /etc/my.cnf
9.添加服務,設置mysql服務開機自啓
1)添加服務,進入mysql安裝目錄,拷貝目錄/support-files下的mysql.server文件到/etc/init.d/目錄下,並重名爲mysql
#cd /usr/local/mysql
#cp support-files/mysql.server /etc/init.d/mysql
2)設置開機自啓
# chkconfig mysql on
10.啓動mysql服務
11.編譯安裝的mysql沒有初始密碼,所以要給root用戶設置初始密碼
#/usr/local/mysql/bin/mysqladmin -u root password '123456'
12.因爲手動編譯的,所有要爲mysql添加環境變量,不然在終端中輸入mysql將會提示命令找不到
1)編輯/etc/profile,在文件末尾添加如下內容
export PATH=$PATH:/usr/local/mysql/bin
如:
2)使文件立即生效
#source /etc/profile
13.現在mysql的安裝配置基本完成,可以去登陸、使用
登錄時如果出現:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)錯誤
可以修改/etc/my.cnf
添加如下內容:
[client]
socket=/var/lib/mysql/mysql.sock
如:
14.如果希望其它遠程主機訪問該mysql,可以進行如下操作
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
或者也可以去修改mysql庫中的user表,添加指定的host主機
15.由於防火牆默認沒有開啓3306端口,所以需要手動開啓此端口
編輯/etc/sysconfig/iptables
添加如下內容
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
16.此時我們可以查看一下允許訪問該數據庫的主機、用戶等信息
進入mysql庫,查看user表信息
mysql>use mysql
mysql>select host,user,password from user;
可以看到我們分別設置的兩個密碼(本地訪問mysql的root用戶密碼和遠程訪問mysql的root用戶的密碼)
如果需要指定某些主機可以訪問該數據庫,則可以修改該表,添加指定主機的ip到該表中。
17.如果要更改數據庫的默認端口,則需要更改配置文件/etc/my.cnf
添加如下內容:
port:端口號
例如:
然後重啓mysql服務
#service mysql restart
注意:如果此處修改了默認端口號,則防火牆允許訪問的端口號也要進行更改,要與此文件中的端口號保持一致
18.如果在局域網內出現連接mysql比較慢的情況,可能是與mysql的DNS反向解析有關,可以把此功能關閉掉
修改文件/etc/my.cnf,添加如下內容:
skip-name-resolve
如:
重啓mysql服務即可。