自動化安裝mariadb

章節預覽:
mysql

    一、         mariadb數據庫的簡單介紹linux

    二、         手動編譯安裝mariadb過程sql

    三、         自動化安裝實現腳本shell

1、mariadb數據庫數據庫

MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,採用GPL受權許可 MariaDB的目的是徹底兼容MySQL,包括API和命令行,使之能輕鬆成爲MySQL的代替品。安全

MariaDB基於事務的Maria存儲引擎,替換了MySQLMyISAM存儲引擎,它使用了PerconaXtraDBInnoDB的變體,分支的開發者但願提供訪問即將到來的MySQL 5.4 InnoDB性能。這個版本還包括了 PrimeBase XT (PBXT)FederatedX存儲引擎。bash

2、手動編譯安裝mariadb過程app

一、   下載二進制mariadb安裝包ide

從官網下載http://mariadb.org性能

下載:mariadb-10.2.8-linux-x86_64.tar.gz

二、   解壓下載到的壓縮包

因爲安裝包自定義了二進制程序放置目錄,因此這個解壓的目錄必定要是根據該軟件包自定義的。默認解壓到/usr/local/目錄下,而且解壓後的目錄的名字必須是mysql

解壓操做:

    tarxvf mariadb-10.2.8-linux-x86_64.tar.gz  -C/usr/local/

wKioL1niA9GDlDmyAADkdF_mdSk346.png

正常解壓後的目錄名爲mariadb-10.2.8-linux-x86_64,須要將該目錄下的數據放到名爲mysql目錄下,這個是安裝包默認的。這裏有兩種方式:

  • 修改目錄名:

    mv /usr/local/mariadb-10.2.8-linux-x86_64 /usr/local/mysql

2)建立軟連接:

    ln -s /usr/local/mariadb-10.2.8-linux-x86_64 /usr/local/mysql

wKioL1niA9_REwn6AABwxLgauWE683.png

三、   手動建立mysql系統用戶

須要建立一個系統用戶mysqlmysql用戶是用來管理mysql的。

    useradd -r -d /app/mariadb -m -s /sbin/nologin mysql    

    -r :建立系統用戶 

    -d:建立家目錄,該目錄是存放數據庫的目錄,因此儘量大

    -m;強制建立用戶,系統用戶默認是不建立用戶的。 

    -s :指定登陸shell類型

wKiom1niBqvTmqSoAABYpOl_i7M735.png

四、   建立mariadb配置文件

/usr/local/mysql/support-files/目錄下有自帶的配置文件,選中其中合適的一個配置文件,將其複製到/etc/mysql/目錄下,並更名爲my.cnf

(1):mkdir/etc/mysql

(2):cp/usr/local/mysql/support-files/my-huge.cnf /etc/my.cnf

須要對配置文件進行簡單的修改才能夠生效:

Vim /etc/mysql/my.cnf

[mysqld]後面添加:

#該數據庫目錄就是建立mysql用戶的家目錄,數據庫文件都要放到這裏。

datadir = /app/mariadb

innodb_file_per_table= on

skip_name_resolve =on

wKioL1niBB7CUJbIAAD2dTmoY1Q432.png

五、   建立系統數據庫

一個系統啓動,必須有本身的數據庫,不然是啓動不起來的,系統數據庫放置一些系統自身須要的數據。

安裝包自身帶有建立系統數據庫的腳本,不須要咱們手動建立該腳本在/usr/local/mysql/scripts/mysql_install_db

改腳本必須在/usr/local/mysql/目錄下進行執行,由於該目錄下有腳本運行須要的文件。

cd /usr/local/mysql

./scripts/mysql_install_db–user=mysql –datadir=/app/mariadb

wKiom1niBvGRSbQcAAD08MWAqPI613.png

六、   建立mariadb服務啓動腳本

爲了使系統可以啓動該服務,須要建立服務運行進程,在安裝包裏自帶的有:/usr/local/mysql/support-files/mysql.server

須要將運行程序複製到/etc/init.d/目錄下,並更名爲mysqld

cp /usr/local/mysql/support-files/mysql.server/etc/init.d/mysqld

wKiom1niBwmjMugXAAAbGNAVwz4530.png

七、   添加mysqld服務到運行等級列表中

須要將服務添加到系統啓動能夠加載運行的運行級別中

chkconfig  --add mysqld

chkconfig  --list mysqld能夠查看到在那些運行等級中能夠開啓。

wKioL1niBGeTpmrNAACY--RXK6A725.png

八、   建立mariadb日誌文件和郵件文件

必選要建立mariadb日誌文件而且修改該日誌文件的所屬人,不然mysql系統用戶不能寫入日誌數據,就會致使服務啓動失敗。同時也要建立郵件文件。

Centos6Centos7中有點區別:

Centos7:

      mkdir /var/log/mariadb/

      touch /var/log/mariadb/mariadb.log

      touch /var/spool/mail/mysql

      chown mysql:mail /var/spool/mail/mysql

      chown mysql /var/log/mariadb/

   chown mysql /var/log/mariadb/mariadb.log

   修改擁有者是爲了讓mysql用戶可以寫入日誌文件

 

Centos6:

      touch /var/log/mysqld.log

      touch /var/spool/mail/mysql

      chown mysql:mail /var/spool/mail/mysql

      chown mysql /var/log/mysqld.log

wKioL1niBJqyZ3JuAACwhxhzU_A414.png

九、   mariadb添加環境變量PATH

/etc/profile.d/目錄下添加一個mariadbpath.sh文件,文件中定義環境變量PATH

echo ‘export  PATH=/usr/local/mysql/bin:$PATH’ >/etc/profile.d/mariadbpath.sh

運行該腳本使腳本生效:

source /etc/profile.d/mariadbpath.sh

wKiom1niB2Piz-9bAABtH2uFLIs181.png

十、  啓動服務

因爲咱們已經建立了服務啓動腳本,因此這裏能夠直接使用service命令啓動:

service mysqld start

查看是否啓動,能夠經過查看是否開啓了3306端口來肯定:

ss –tnul

wKioL1niBLzQg4qSAABXUHPUB4E781.png

十一、  運行mariadb自帶安全腳本

該腳本相似於mariadb初始化腳本,位於:/usr/local/mysql/bin/mysql_secure_installation

具體過程以下圖所示: 

wKioL1niBN6ws8rXAACzZEpMRo8990.png

wKiom1niB5Sim-kYAACJWMpeWQs105.png

十二、  登陸測試

mysql –u(username) –p(password)

wKiom1niB9LzcuJSAACAEiOkl1Y937.png


3、自動化安裝腳本實現

    一、自動安裝展現

wKiom1niC0iRgIMwAADItuY89Zg394.png

二、自動卸載展現

wKioL1niCLPgeMsbAAAr_MLgzOk241.png

autoinstallmariadb.sh:

#!/bin/bash

#***********************************************

#Author:    jiake

#QQ:          

#Date:         2017-10-12 19:25:27

#Filename:     autoinstallmariadb.sh

#Description: 

#Copyright (C): All right reserved

#***********************************************

read -p "Please tell me where the mariadb installation package is: " package

read -p "Please tell me where the mariadb database directory is located: " dbdir


#掃描文件是否存在,不存在返回非0值

scanfile() {

        ls $1 &> /dev/null && return 1 || return 2

}

#掃描文件是否存在,不存在返回非0值

scandir() {

        ls -d "$1" &> /dev/null && return 3 || return 4

}

#判斷指定軟件包是否存在

echo"尋找指定安裝包位置。。。。"

scanfile $package

A=$?

[ $A -eq 2 ] && { echo "指定的mariadb安裝包路徑不正確!";exit 110; }


#解壓安裝包

scandir /usr/local

B=$?

[ $B -eq3 ] && { echo "解壓安裝包到指定/usr/local。。。。。" ; tar xvf $package -C /usr/local/ &> /dev/null; }


#建立mysql軟連接

echo "建立mysql軟連接。。。。"

mulu=`basename $package |sed -r 's/(.*)\.tar.gz/\1/'`

ln -s /usr/local/$mulu /usr/local/mysql


#建立mysql用戶

echo "建立mysql系統帳戶。。。。。"

id mysql &> /dev/null && userdel -r mysql &> /dev/null

useradd -r -d $dbdir -m -s /sbin/nologin mysql


#準備配置文件

scandir /etc/mysql

C=$?

[ $C -eq4 ] && { echo "複製配置文件。。。。"; mkdir /etc/mysql &> /dev/null; }

cp /usr/local/mysql/support-files/my-huge.cnf /etc/mysql/my.cnf


#修改配置文件(因爲sed裏面沒法寫入變量,因此固定的datadir目錄爲/app/mariadb,若有不一樣請手動修改)

echo "修改配置文件。。。。"

sed -ri 's@\[mysqld\]@&\ndatadir = /app/mariadb\ninnodb_file_per_table =on\nskip_name_resolve = on\n@' /etc/mysql/my.cnf


#建立系統數據庫

echo "建立系統數據庫。。。。"

cd /usr/local/mysql/

scripts/mysql_install_db --user=mysql --datadir=$dbdir &> /dev/null


#複製服務腳本

echo "複製服務腳本到init.d/目錄下。。。。"

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld


chkconfig --add mysqld &> /dev/null


#判斷系統版本

echo"建立數據庫日誌文件。。。。。"

version=`cat/etc/redhat-release |sed -r 's/.* ([0-9])\.([0-9]).*$/\1/'`


#建立日誌文件

[ $version -eq 7 ] && { mkdir /var/log/mariadb/ &> /dev/null ;touch /var/log/mariadb/mariadb.log &> /dev/null; chown mysql/var/log/mariadb/; chown mysql /var/log/mariadb/mariadb.log;touch/var/spool/mail/mysql;chmod 660 /var/spool/mail/mysql ;chown mysql:mail/var/spool/mail/mysql; }

[ $version -eq 6 ] && { touch /var/log/mysqld.log &> /dev/null;chmod 644 /var/log/mysqld.log; chown mysql:mysql /var/log/mysqld.log; touch /var/spool/mail/mysql;chmod 660 /var/spool/mail/mysql;chown mysql:mail /var/spool/mail/mysql; }


#添加環境變量PATH

echo"添加環境變量到指定的/etc/profile.d/mariadbpath.sh文件中。。。。。。。"

echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mariadbpath.sh

source /etc/profile.d/mariadbpath.sh


#啓動服務

echo "啓動服務。。。。"

service mysqld start &> /dev/null || echo "服務啓動失敗!,請手動啓動。"


#運行安全腳本

echo "運行安全腳本mysql_secure_installation。。。。。"

echo -e "\nY\njiake\njiake\nY\nN\nY\nY\n" | mysql_secure_installation &> /dev/null


    autodeletemariadb.sh:

#!/bin/bash

#***********************************************

#Author:      jiake

#QQ:         

#Date:        2017-10-14 09:27:29

#Filename:    autodeletemariadb.sh

#Description: 自動刪除編譯安裝好的mariadb數據庫

#Copyright (C): All right reserved

#***********************************************

read -p "Please tell me where the dbdir is :" dbdir


#先殺死mysqld進程

echo "stoping mysqld service......."

service mysqld stop &> /dev/null


#刪除mysql帳戶

echo "delete mysql number ......."

userdel -r mysql &> /dev/null


#刪除chkconfig

echo "chkconfig del......"

chkconfig --del mysqld


#刪除數據庫目錄

echo "delete dbdir ......"

rm -fr $dbdir &> /dev/null


#刪除服務腳本

echo "delete mysqld.service"

rm -f /etc/init.d/mysqld &> /dev/null


#刪除程序目錄

echo "delete bindir......."

rm -fr /usr/local/mariadb-* &> /dev/null

rm -f /usr/local/mysql &> /dev/null


#刪除配置文件目錄

echo "delete configfile......"

rm -fr /etc/mysql &> /dev/null


#刪除日誌文件和mail文件

echo "delete log_file and mail_file......."

version=`cat /etc/redhat-release |sed -r 's/.*([0-9])\.([0-9]).*$/\1/'`

[ $version -eq 7 ] && { rm -fr/var/log/mariadb &> /dev/null ;rm -f /var/spool/mail/mysql &>/dev/null; }

[ $version -eq 6 ] && { rm -f/var/log/mysqld.log &> /dev/null; rm -f /var/spool/mail/mysql &>/dev/null; }


#刪除環境變量配置文件

echo "delete path.file ......."

rm -f /etc/profile.d/mariadbpath.sh &>/dev/null


echo "removed mariadb !"

相關文章
相關標籤/搜索