腳本實現二進制MariaDB數據庫的安裝

一、實驗目的

mariadb屬於關係型數據庫,通過此實驗掌握mariadb數據庫的二進制安裝

二、實驗準備

mariadb-10.2.23-linux-x86_64.tar.gz安裝包,虛擬機需要安裝expect包

三、實驗腳本

vim /data/mysql.sh
#!/bin/bash
#create group user  創建用於mysql服務的組和用戶
groupadd -r -g 336 mysql #創建mysql組,系統組,gid336
useradd -r -g mysql -u 336 -s /sbin/nologin -d /data/mysql mysql  #創建用戶mysql,系統用戶,指定主組mysql,uid336,shell類型/sbin/nologin,家目錄/data/mysql(需手動創建)
#tar and link  解壓文件和創建軟鏈接
tar xvf /data/mariadb-10.2.23-linux-x86_64.tar.gz -C /usr/local/  #解壓文件至/usr/local/目錄下
cd  /usr/local/
ln -s mariadb-10.2.23-linux-x86_64/ mysql  #創建軟鏈接mysql指向mariadb-10.2.23-linux-x86_64
chown -R root.root /usr/local/mysql/  #遞歸修改mysql的屬主和屬組爲root
#PATH 修改變量PATH,讓安裝包自帶腳本可以執行
echo "PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile #將自帶腳本路徑添加到變量,也可以在/etc/profile.d/下自己創建.sh後綴的文件存放
source /etc/profile  #使變量存放文件生效
#create LV 創建卷組,用來存儲數據庫,方便容量不夠時擴展
mkdir /data/mysql  #創建數據庫存放目錄
pvcreate /dev/sdb  #創建物理卷
vgcreate vg0 /dev/sdb  #創建卷組
lv -n mysql -L 10G vg0  #創建名爲mysql,大小10G的邏輯卷
mkfs.xfs /dev/vg0/mysql  #將邏輯卷文件系統製作爲xfs
mount /dev/vg0/mysql /data/mysql  #掛載至/data/mysql目錄下
#data準備數據庫數據及目錄
chown mysql.mysql /data/mysql/  #修改數據庫屬主屬組
cd /usr/local/mysql 
./scripts/mysql_install_db --datadir=/data/mysql --user=mysql  #以指定目錄和身份生成數據庫
#service  準備mysql服務端的配置文件
mkdir  /etc/mysql
cp /usr/local/mysql/support-files/my-huge.cnf /etc/mysql/my.cnf  #拷貝模板文件
sed -i "/\[mysqld\]/adatadir=\/data\/mysql" /etc/mysql/my.cnf  #在[mysqld]後添加datadir=/data/mysql
#start script 準備服務啓動腳本
cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld 
chkconfig --add mysqld  #將服務加入開機啓動
service mysqld start  #啓動服務
#securety 安全加固
expect <<EOF
spawn mysql_secure_installation  #安全加固腳本,可以重新設置密碼
expect "none" {send "\n"}
expect "none" {send "\n"}
expect "password" {send "y\n"}
expect "New" {send "123456\n"}
expect "Re-enter" {send "123456\n"}
expect "anonymous" {send "y\n"}
expect "login" {send "y\n"}
expect "database" {send "y\n"}
expect "privilege" {send "y\n"}
expect eof
EOF                    

測試連接

mysql -uroot -p"password "
    執行結果顯示mysql命令未找到,原因是腳本在一個新的子bash進程裏面執行,在這個子bash進程裏面執行的PATH變量添加、刷新並不能繼承至父進程,這才導致PATH變量文件雖然裏面有新的路徑加入,卻還是顯示命令未找到,解決方法是再次使文件生效,即source /etc/profile或.  /etc/profile
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章