二進制安裝Mariadb

第一個實驗:

實現二進制安裝mariadb 用腳本或ansible的role實現
我們先手動執行一遍,能夠更好的瞭解其流程

第一步:將我們下載的mariadb二進制包解壓

由於我們下載的是二進制的程序包,所以,源碼編譯的步驟已經有人替我們做了,所以,我們可以跳過編譯。但是,源碼編譯必須要指定編譯目錄,所以,我們必須知道二進制安裝完後它存放的位置。所以,我們解壓縮的時候,要指定存放路徑,而usrlocal就是默認的存放路徑

tar xvf mariadb-10.2.23-linux-x86_64.tar.gz -C usrlocal

第二步:

我們進入到usrlocal目錄下,因爲在下載二進制源包的網頁上,有非常詳細的安裝過程,在這裏,我只安裝位置相關的一小部分:

In the example below we install MariaDB in the usrlocalmysql directory (this is the default location for MariaDB for many platforms). However any other directory should work too.
We install the binary with a symlink to the original name. This is done so that you can easily change MariaDB versions just by moving the symlink to point to another directory.

大概意思就是,我們默認的安裝路徑是在usrlocalmasql目錄下,並且推薦使用軟連接來指向mysql,這方便我們日後對mariaDB進行升級和降級,我們只需要將軟連接重新指向一個新的版本就行了。

cd usrlocal
ln -s mariadb-10.2.23-linux-x86_64 mysql

第三步:

cd mysql

當我們ls -l 之後,發現,目錄內的所有者和所屬組是有些問題的,所以,我們需要改變該目錄下所有的所屬者和所屬組,這裏,我們修改爲root就行

chown -R root.root mysql

第四步:

在正常的應用服務程序上,都會創建一個和該服務對應的用戶賬號,該用戶的職責就只只負責對應的服務程序,在yum安裝的時候,會自動創建,但是我們是手動的二進制安裝,所以,我們需要創建對應的用戶和用戶組

groupadd -r -g 336 mysql
useradd -r -g my
sql -u 336 -s sbinnologin -d datamysql mysql

我們指定了家目錄,這個家目錄就意味着我們以後存放數據庫的路徑,但是我們指定的家目錄不會自動生成,所以,我們需要手動創建

mkdir datamysql
chown -R mysql.mysql datamysql

第五步:

我們需要創建數據庫文件,很多數據庫文件都是二進制,我們,很難創建,但是,在usrlocalmysqlscripts目錄下有一個mysql_install_db可執行程序,它就可以幫助我們創建數據庫文件。
需要注意的是,我們進入到usrlocalmysqlscripts這個目錄中,因爲,我們沒有添加到PATH變量中去,所有,我們要在這個目錄下執行此程序,理論上是可以成功的

cd usrlocalmysqlscripts
.mysql_install_db --user=mysql --datadir=datamyql

我們需要執行此程序的用戶和生成數據庫文件的路徑
但是,它會報錯,內容如下:
FATAL ERROR Could not find .binmy_print_defaults

而這個文件存放在usrlocalmysqlbin目錄下,我們需要在它的上一級目錄下執行此命令,也就是usrlocalmysql目錄下

scriptsmysql_install_db --user=mysql --datadir=datamysql

執行之後,就會在datamysql目錄下生成數據庫文件,並且所屬組和所屬者的身份是mysql,

yum install  libaio.x86_64 -y
scriptsmysql_install_db --user=mysql --datadir=datamysql

注意:如果有的同學發現執行之後會報錯,報錯內容爲卻少一個libaio.so.1的動態共享庫,我們可以yum install libaio.x86_64 手動安裝這個包

第六步:

接下來,我們要創建一個數據庫的配置文件,
數據庫的默認配置文件etcmy.cnf文件,但是這個配置文件默認的內容的是不符合要求的,我們可以自己創建一個配置文件,etcmysqlmy.cof,這個文配置文件的優先級要比系統自帶的配置文件要高
我們可以參考解壓縮文件中的usrlocalmysqlsupport-files目錄下my-huge.cnf文件來當做配置文件

mkdir etcmysqlmy.cnf
cp usrlocalmysqlsupport-filesmy-huge.cnf etcmysqlmy.cnf
我們需要在配置文件中的28行添加一條配置信息,用來指定數據路文件的位置,
datadir=datamysql

第七步:

配置文件我們已經創建好了,接下來就是服務啓動腳本了,CentOS7服務啓動的腳本存放在etcinit.d下,我們不用自己編寫這個啓動腳本,當然,有能力的同學也可以自己編寫,我們解壓縮的二進制包很友好的給我們提供了服務啓動的程序,在usrlocalmysqlsupport-files這個目錄下的mysql.server文件,我們將這個文件複製到etcinit.d並且改名爲mysqld,然後我們將服務腳本添加到列表中,然後啓動服務就好了。3306端口已經處於監聽狀態了

cp usrlocalmysqlsupport-filesmysql.server etcinit.dmysqld
chkconfig --add mysqld
chkconfig --list 
systemctl start mysqld

第八步:

添加PATH路徑,以後我們直接敲命令就好了
echo PATH='usrlocalmysqlbin$PATH'  etcprofile.dmysql.sh
. etcprofile.dmysql.sh

第九步:

我們現在就可以直接使用mysql密令登錄到數據庫了,但是,目前數據庫很不安全,所以,我們需要對數據庫進行安全加固。
安全加固:mysql會自帶一個安全加固的一個程序mysql_secure_installation,這個是個交互式的方式,大概內容如下:

    1、默認是空密碼,只能輸入enter設置密碼
    2、連續輸入兩次密碼
    3、是否刪除匿名用戶
    4、禁止用戶遠程登錄
    5、默認有一個test數據庫,任何人都可以訪問,只用測試環境,但是,進入生產環境之前,確保把這個數據庫刪除
    6、將以上信息,重新加載,

第十步:

測試連接,當執行完安全加固後,我們就必須要指定用戶和密碼登錄了
mysql -u'user' -p'passwd'
示例
mysql -uabc -p123456

第二個實驗:實現用shell腳本來完成上面的工作

注意:我們要模擬的真實的環境,所以,我們推薦把mariaDB的數據庫存放在LV邏輯捲上,這樣就可以靈活的實現空間的擴容了
先複習以下邏輯卷的創建過程,以我的虛擬機爲例
我們添加一塊新硬盤:20G devsdb3
在原有的磁盤上有一個sda3,掛載目錄是在data下, devsdb1
這次用devsdae3和devsdb1來創建邏輯卷
步驟如下:

umount devsda3
fdisk devsdb
fdisk devsda tn 3n 8en wn
partprobe devsda
fdisk devsda nn n n +5Gn tn n 8en w
 pvcreate devsda3 devsdb1
 pvdisplay
 vgcreate mysql devsda3 devsdb1
 vgdisply
 lvcreate -L 5G -n mysql_data mysql
 lvdisplay
 mkfs.xfs devmysqlmysql_data
 mkdir datamysql
 mount devmappermysql_data datamysql
 vim etcfstab 

示例腳本:

#!binbash
#install mysql
#Create LVM
sleep 1
echo start install......
null=devnull
umount devsda3 & $null
sed -i '11d' etcfstab
fdisk devsda & $null EOF
8e
w
EOF
partprobe devsda
p
1

+5G
t
8e
w
EOF
echo disk create---done
pvcreate devsda3 devsdb1 & $null EOF
y
lvcreate -L 5G -n mysql_data mysql & $null
mkfs.xfs devmysqlmysql_data & $null
mkdir datamysql
mount -a

echo LVM create done
#bin install mariadb
cd usrlocal
ln -s mariadb-10.2.23-linux-x86_64 mysql & $null
chown -R root.root mysql & $null
echo decompress done
#create MASQL user
groupadd -r -g 336 mysql
useradd -r -g mysql -u 336 -s sbinnologin -d datamysql mysql
chown -R mysql.mysql datamysql
echo User create done
#create MYSQL DB  file 
cd usrlocalmysql

echo create mairiaDB file done
#create configure fiel
mkdir etcmysql
touch etcmysqlmy.cnf
cp usrlocalmysqlsupport-filesmy-huge.cnf etcmysqlmy.cnf
sed -i '28adatadir=datamysql' etcmysqlmy.cnf

#start service script
cp usrlocalmysqlsupport-filesmysql.server etcinit.dmysqld
chkconfig --add mysqld & $null
systemctl start mysqld
#add PATH
echo PATH='usrlocalmysqlbin$PATH'  etcprofile.dmysql.sh
. etcprofile.dmysql.sh
echo start service done
#secure enhance
mysql_secure_installation & $null EOF

y
centos
centos
y
y
y
y
EOF
echo secure done
sleep 3
echo tasks done

第二種:用ansible 實現完成安裝
還有些問題,正在改善,不好意思!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章