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

1、實驗目的

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

2、實驗準備

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

3、實驗腳本

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
相關文章
相關標籤/搜索