一、查找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ù)文件目錄

十二、檢查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è)鏈接即可