CentOS6.5下編譯安裝MySQL 5.6.35并連接

一、查找mysql依賴環(huán)境

安裝mysql前需要查詢系統(tǒng)中含有的有關(guān)mysql的軟件。

rpm -qa | grep -i mysql

mysql-libs-5.1.71-1.el6.i686 

它是好幾個(gè)軟件的依賴,其中在mini版本中postfix軟件依賴mysql-libs,網(wǎng)絡(luò)上很多建議都是直接刪除,yum remove mysql-libs 或者 rpm -e --nodeps mysql-libs-5.1.71-1.el6.i686,但這樣不好,有些應(yīng)用需要安裝mysql 5.1的庫(kù)。網(wǎng)上找后,不需要降級(jí)mysql,安裝 MySQL-shared-compat 就可以了,到 http://rpm.pbone.net 找到相應(yīng)版本號(hào)的rpm包,例如我的是 5.6.35,下載安裝上就OK了

二、編譯安裝MySQL前的準(zhǔn)備工作

1)安裝編譯源碼所需的工具和庫(kù):

yum install gcc gcc-c++ ncurses-devel perl

(2)安裝cmake,從http://www.cmake.org 下載源碼并編譯安裝

wget https://cmake.org/files/v3.7/cmake-3.7.2.tar.gz
tar -xzvf cmake-3.7.2.tar.gz
cd cmake-3.7.2.tar.gz
./bootstrap
make
make install
cd ~

三、設(shè)置MySQL用戶和組

(1)新增mysql用戶組

groupadd mysql

(2)新增mysql用戶

useradd -r -g mysql mysql

四、新建MySQL所需要的目錄

(1)新建mysql安裝目錄

mkdir -p /usr/local/mysql

(2)新建mysql數(shù)據(jù)庫(kù)數(shù)據(jù)文件目錄

mkdir -p /data/mysqldb

五、下載MySQL源碼包并解壓

http://dev.mysql.com/downloads/mysql/ 直接下載源碼,解壓mysql-5.6.35.tar.gz

wget http://dev.mysql.com/downloads/mysql/mysql-5.6.35.tar.gz
tar -zxv -f mysql-5.6.35.tar.gz
cd mysql-5.6.35

六、編譯安裝MySQL

從mysql5.5起,mysql源碼安裝開(kāi)始使用cmake了,設(shè)置源碼編譯配置腳本。
(1)設(shè)置編譯參數(shù):
cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DMYSQL_DATADIR=/data/mysqldb
-DMYSQL_TCP_PORT=3306
-DENABLE_DOWNLOADS=1
-DCMAKE_INSTALL_PREFIX=dir_name # 設(shè)置mysql安裝目錄
-DMYSQL_UNIX_ADDR=file_name # 設(shè)置監(jiān)聽(tīng)套接字路徑,這必須是一個(gè)絕對(duì)路徑名。默認(rèn)為/tmp/mysql.sock
-DDEFAULT_CHARSET=charset_name # 設(shè)置服務(wù)器的字符集。缺省情況下,MySQL使用latin1的(CP1252西歐)字符集,cmake/character_sets.cmake文件包含允許的字符集名稱列表。
-DDEFAULT_COLLATION=collation_name #設(shè)置服務(wù)器的排序規(guī)則。
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1
存儲(chǔ)引擎選項(xiàng):
MyISAM,MERGE,MEMORY,和CSV引擎是默認(rèn)編譯到服務(wù)器中,并不需要明確地安裝。
靜態(tài)編譯一個(gè)存儲(chǔ)引擎到服務(wù)器,使用-DWITH_engine_STORAGE_ENGINE= 1

可用的存儲(chǔ)引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), 和PERFSCHEMA (Performance Schema)
-DMYSQL_DATADIR=dir_name # 設(shè)置mysql數(shù)據(jù)庫(kù)文件目錄
-DMYSQL_TCP_PORT=port_num # 設(shè)置mysql服務(wù)器監(jiān)聽(tīng)端口,默認(rèn)為3306
-DENABLE_DOWNLOADS=bool 是否要下載可選的文件。例如,啟用此選項(xiàng)(設(shè)置為1),cmake將下載谷歌所使用的測(cè)試套件運(yùn)行單元測(cè)試。

(2)重新運(yùn)行配置,需要?jiǎng)h除CMakeCache.txt文件

rm CMakeCache.txt

(3)編譯并安裝

make
make install

七、修改mysql目錄所有者和組

(1)修改mysql安裝目錄的所有者和組

cd /usr/local/mysql
chown -R mysql:mysql . 

(2)修改mysql數(shù)據(jù)庫(kù)文件目錄

cd /data/mysqldb
chown -R mysql:mysql .

八、初始化mysql數(shù)據(jù)庫(kù)

cd /usr/local/mysql
scripts/mysql_install_db --basedir=/usr/local/mysql --user=mysql --datadir=/data/mysqldb

九、復(fù)制mysql服務(wù)啟動(dòng)配置文件

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
# 注:如果/etc/my.cnf文件存在,則覆蓋。

十、復(fù)制mysql服務(wù)啟動(dòng)腳本及加入PATH路徑

cp support-files/mysql.server /etc/init.d/mysqld
vim /etc/profile
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
export PATH
source /etc/profile

十一、啟動(dòng)mysql服務(wù)并加入開(kāi)機(jī)自啟動(dòng)(可選這個(gè)步驟,以后可以自己?jiǎn)?dòng)的)

service mysqld start
chkconfig --level 35 mysqld on

注:我在操作時(shí)報(bào)錯(cuò):
The server quit without updating PID file (/data/mysqldb/[FAILED]a9fb59k2wxqfo3Z.pid).
解決方法:修改/etc/my.cnf 中datadir,指向正確的mysql數(shù)據(jù)庫(kù)文件目錄

image.png

十二、檢查mysql服務(wù)是否啟動(dòng)

netstat -tulnp | grep 3306 
mysql -u root -p
密碼為空,如果能登陸上,則安裝成功。

十三、修改MySQL用戶root的密碼

mysqladmin -u root password '123456'

注:也可運(yùn)行安全設(shè)置腳本,修改MySQL用戶root的密碼,同時(shí)可禁止root遠(yuǎn)程連接,移除test數(shù)據(jù)庫(kù)和匿名用戶。

/usr/local/mysql/bin/mysql_secure_installation

十四、安裝好之后遠(yuǎn)程不能直接訪問(wèn),需要做如下操作:

(1)在linux系統(tǒng)中添加3306端口到防火墻中:

iptables -A INPUT -i eth0 -p tcp --dport 3306 -j ACCEPT

(2)將user表中user字段為root的 host字段設(shè)置成%:
登錄進(jìn)mysql執(zhí)行如下語(yǔ)句(mysql -uroot -p):

use mysql;
SELECT Host,User FROM user;
UPDATE user SET Host = '%' WHERE User= 'root' LIMIT 1;
flush privileges;

然后再連接,成功!

十五、可能會(huì)出現(xiàn)的錯(cuò)誤

  • 問(wèn)題1:
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
    解決:
    新建一個(gè)鏈接或在mysql中加入-S參數(shù),直接指出mysql.sock位置。
ln -s /usr/local/mysql/data/mysql.sock /tmp/mysql.sock  
/usr/local/mysql/bin/mysql -u root -S /usr/local/mysql/data/mysql.sock  
  • 問(wèn)題2:
    MySQL問(wèn)題解決:-bash:mysql:command not found
    因?yàn)閙ysql命令的路徑在/usr/local/mysql/bin下面,所以你直接使用mysql命令時(shí),
    系統(tǒng)在/usr/bin下面查此命令,所以找不到了
    解決辦法是:
ln -s /usr/local/mysql/bin/mysql /usr/bin
# 做個(gè)鏈接即可
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容