溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

CentOS 6.8 Cmake 編譯安裝MySQL(一)

發(fā)布時(shí)間:2020-07-19 17:01:14 來(lái)源:網(wǎng)絡(luò) 閱讀:10396 作者:邱月濤 欄目:MySQL數(shù)據(jù)庫(kù)

部署之前我們說(shuō)說(shuō),MySQL的幾種安裝方式:

  編譯安裝:優(yōu)點(diǎn)是可以定制,按照公司要求個(gè)性化設(shè)置;缺點(diǎn):編譯復(fù)雜,解決依賴問(wèn)題

  二進(jìn)制安裝:優(yōu)點(diǎn)無(wú)需編譯,解壓即可;缺點(diǎn) 軟件包較大

  yum安裝:結(jié)合了上面2個(gè)的優(yōu)點(diǎn),但需要自己定制rpm包,放到y(tǒng)um倉(cāng)庫(kù)中,

               然后只需執(zhí)行一個(gè)命令yuminstall mysql-server -y 即可完成。

那我們選擇MySQL的安裝方式呢?

  若是對(duì)數(shù)據(jù)庫(kù)要求不太高的場(chǎng)景,可以采用yum/rpm方式安裝MySQL,例如并發(fā)不大,只是在公司內(nèi)部、企業(yè)內(nèi)部的應(yīng)用(Zabbix監(jiān)控系統(tǒng),OpenStack后臺(tái)管理)等需要數(shù)據(jù)庫(kù)的一些應(yīng)用場(chǎng)景;    當(dāng)然,生產(chǎn)場(chǎng)景下也是可以選擇yumrpm方式進(jìn)行安裝的。

  但是,有很多大型網(wǎng)站或門戶網(wǎng)站,往往在安裝MySQL時(shí),會(huì)有各種定制化、初始化的需求,這時(shí),要根據(jù)企業(yè)的需求先把源碼包制作成rpm,然后搭建自己的yum倉(cāng)庫(kù),最終采用yum install mysql-server -y的方式安裝,這樣做的優(yōu)點(diǎn)是即兼顧了yum/rpm安裝方式簡(jiǎn)單的優(yōu)點(diǎn),又用到了源碼包安裝方式的可定制性



今天就說(shuō)說(shuō),編譯安裝

一、系統(tǒng)環(huán)境與軟件版本

[root@db02 scripts]# cat /etc/redhat-release 
CentOS release 6.8 (Final)
[root@db02 scripts]# uname -a
Linux db02 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

軟件版本

Mysql:mysql-5.5.32  后續(xù)更新 5.6.36版本
Cmake:cmake.x86_64   2.8.12.2-4.el6   #編譯工具

二、安裝部署MySQL

1,安裝依賴包

yum install ncurses-devel libaio-devel
rpm -qa ncurses-devel libaio-devel


2,安裝cmake,之后需要用它來(lái)編譯mysql

yum install cmake -y

3,創(chuàng)建MySQL用戶,下載軟件包

useradd mysql -s /sbin/nologin -M -u 503
id mysql
mkdir -p /home/oldboy/tools
cd /home/oldboy/tools/
#rz 上傳源碼包,包可以用過(guò)mirror開(kāi)源社區(qū)獲取或下面我的百度云有共享##
鏈接:http://pan.baidu.com/s/1qYhRwvi 密碼:19dn
tar xf mysql-5.5.32.tar.gz 
cd mysql-5.5.32

4,cmake 編譯安裝及參數(shù)
#Cmake參數(shù)說(shuō)明  http://qiuyt.blog.51cto.com/1229789/1923189

cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.32 \
-DMYSQL_DATADIR=/application/mysql-5.5.32/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.5.32/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \               
-DDEFAULT_COLLATION=utf8_general_ci \  
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \  
-DENABLED_LOCAL_INFILE=1 \       
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FAST_MUTEXES=1 \
-DWITH_ZLIB=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_READLINE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_DEBUG=0
make -j 2 && make install&& cd ..
#-j 編譯時(shí)可以指定多個(gè)cpu,加速編譯
################################
#     5.6.36 采用下面          #
################################
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.36 \  #安裝目錄
-DMYSQL_DATADIR=/application/mysql-5.6.36/data \            ##數(shù)據(jù)存放目錄
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.36/tmp/mysql.sock \  #sock的文件路徑
-DDEFAULT_CHARSET=utf8 \                 #默認(rèn)字符集,不加默認(rèn)為拉丁文
-DDEFAULT_COLLATION=utf8_general_ci \    #新建數(shù)據(jù)庫(kù)默認(rèn)字符集,不加默認(rèn)為拉丁文
-DWITH_EXTRA_CHARSETS=all \              ##安裝所有擴(kuò)展字符集
-DWITH_INNOBASE_STORAGE_ENGINE=1 \       ##安裝 innodb 存儲(chǔ)引擎
-DWITH_FEDERATED_STORAGE_ENGINE=1 \      ##安裝 FEDERATED 存儲(chǔ)引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \      #安裝 blackhole 存儲(chǔ)引擎
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \     #安裝 EXAMPLE 存儲(chǔ)引擎
-DWITH_ZLIB=bundled \                    #服務(wù)器可支持壓縮zlib庫(kù)
-DWITH_SSL=bundled \                     #支持 SSL
-DENABLED_LOCAL_INFILE=1 \               #是否允許本地文件導(dǎo)入
-DWITH_EMBEDDED_SERVER=1 \               #是否建立了嵌入式服務(wù)器
-DENABLE_DOWNLOADS=1 \                   #是否下載任意文件
-DWITH_DEBUG=0                           #是否包括調(diào)試支持

#補(bǔ)充:如果系統(tǒng)里有曾經(jīng)安裝的數(shù)據(jù)庫(kù)文件和啟動(dòng)程序最好停掉或刪除,以免沖突。

ln -s /application/mysql-5.5.32/ /application/mysql

#-- Build files have been written to: /home/oldboy/tools/mysql-5.5.32
提示,編譯時(shí)可配置的選項(xiàng)很多,具體可參考結(jié)尾附錄或官方文檔:

##官方5.6的cmake編譯參數(shù)
#http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html


三、MySQL 5.6.36 單實(shí)例配置

 3.1 配置

cd /application/mysql/
cp support-files/my*.cnf /etc/my.cnf
#cp: overwrite `/etc/my.cnf'? y
/application/mysql/scripts/mysql_install_db --basedir=/application/mysql/ --datadir=/application/mysql/data --user=mysql
chown -R mysql.mysql /application/mysql/
cp support-files/mysql.server /etc/init.d/mysqld
chmod 700 /etc/init.d/mysqld
chkconfig mysqld on
chkconfig --list mysqld
mkdir /application/mysql/tmp -p
chown -R mysql.mysql /application/mysql/
/etc/init.d/mysqld start
#設(shè)置環(huán)境變量
echo 'PATH=/application/mysql/bin/:$PATH' >>/etc/profile
tail -1 /etc/profile
source /etc/profile
echo $PATH
mysql

3.2 測(cè)試MySQL

[root@db02 mysql]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.36 Source distribution 
...省略若干行
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.14 sec)

3.3 單實(shí)例錯(cuò)誤總結(jié)

################
問(wèn)題1:

[root@db02 mysql-5.6.36]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/application/mysql-5.6.36/data/db02.err'.
170507 11:36:28 mysqld_safe Directory '/application/mysql-5.6.36/tmp' for UNIX socket file don't exists.
 ERROR! The server quit without updating PID file (/application/mysql-5.6.36/data/db02.pid).
 
 ##排錯(cuò)
[root@db02 mysql-5.6.36]# mkdir /application/mysql/tmp -p
[root@db02 mysql-5.6.36]# chown -R mysql.mysql /application/mysql/
[root@db02 mysql-5.6.36]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/application/mysql-5.6.36/data/db02.err'.
.. SUCCESS!


問(wèn)題2:

[root@db02 mysql]# /etc/init.d/mysqld start
Starting MySQL... ERROR! The server quit without updating PID file (/application/mysql-5.6.36/data/db02.pid).

可能原因:
1、授權(quán)問(wèn)題
2、磁盤空間
3、看日志排查。

3.4 簡(jiǎn)單安全優(yōu)化MySQL

mysqladmin -u root password 'oldboy123' ##設(shè)置mysql密碼##
select user,host from mysql.user;
drop user ''@'db02';
drop user ''@'localhost';
drop user 'root'@'db02';
drop user 'root'@'::1';
select user,host from mysql.user;
drop database test;
show databases;



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI