CentOS6.7下使用非root用戶(普通用戶)編譯安裝與配置mysql數據庫並使用shell腳本定時任務方式實現mysql數據庫服務隨機自動啟動
1.關於mysql?
MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB公司開發,目前屬於Oracle公司。MySQL是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。
特點:
Mysql是開源的,所以你不需要支付額外的費用。
Mysql支持大型的數據庫。可以處理擁有上千萬條記錄的大型數據庫。
MySQL使用標准的SQL數據語言形式。
Mysql可以允許於多個系統上,並且支持多種語言。這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
Mysql對PHP有很好的支持,PHP是目前最流行的Web開發語言。
MySQL支持大型數據庫,支持5000萬條記錄的數據倉庫,32位系統表文件最大可支持4GB,64位系統支持最大的表文件為8TB。
Mysql是可以定制的,采用了GPL協議,你可以修改源碼來開發自己的Mysql系統。
2.關於編譯安裝?
編譯:將源代碼變為機器可執行的代碼文件。
安裝:將可執行文件安裝到操作系統里,才可以使用。
3.安裝編譯代碼需要的依賴包(工具和庫)
//安裝開發工具包
//需要注意的是這些都是常用的依賴包,為了防止報錯,裝多點吧,如果想知道每個工具包具體是干啥玩意的,請自己問度娘便知我這里因時間為題就不一一為大家介紹了。
//這里的cmake工具我們還可以使用編譯的方式安裝,如有興趣請到我的CSDN中下載:http://download.csdn.net/detail/xushouwei/9599540
yum -y groupinstall "Development Tools"
yum -y install openssl* zlib* pcre* ncurses* make cmake vsftpd lrzsz gcc gcc-c++ gcc-g77 flex bison* autoconf automake bzip2-devel zlib-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel openssl-devel libxml2-devel gettext-devel pcre-devel net-snmp-devel curl-devel perl-DBI vixie-cron crontabs wget
如圖1所示:

4.檢查是否安裝有MySQL Server並卸載
//檢查是否安裝有MySQL
rpm -qa|grep mysql
如圖2所示:

//強制卸載已有的mysql,並查看
rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64
rpm -qa|grep mysql
如圖3所示:

至此,我們編譯安裝mysql的前期工作就已經准備好了!
5.使用root用戶新建普通用戶(非root用戶),並查看用戶信息
groupadd formal
useradd -g formal -m formal
id formal
如圖4所示:

6.上傳/下載mysql源碼包
獲取mysql源碼安裝包方式一:
//到mysql官網直接下載
下載地址:http://dev.mysql.com/downloads/mysql/5.5.html
如圖5所示:

獲取mysql源碼安裝包方式一:
//使用wget命令直接從網絡中下載
wget 源碼包地址
因我這里已經提前准備好源碼包,所以我使用第一種方式獲取。如有需要可到我的CSDN中下載:http://download.csdn.net/download/xushouwei/9599890
7.切換普通用戶formal,進入到/home/formal目錄,在/home/formal目錄下新建bak以及mysql目錄
su - formal
cd /home/formal
mkdir bak mysql
如圖6所示:

8.進入到bak目錄,並上傳源碼包。
cd bak
rz
如圖7所示:

9.解壓mysql-5.5.45.tar.gz,進入到mysql-5.5.45目錄
tar -zxvf mysql-5.5.45.tar.gz
cd mysql-5.5.45
如圖8所示:

7.編譯過程檢查(mysql5.6版本以上需要用cmake安裝,這是必須的,其他軟件也可以使用cmake安裝,但是使用cmake安裝的前提是源碼包下有沒有CMakeLists.txt這個文件,有的話就可以使用cmake .)
//編譯的時候一定要注意有沒有空格,否則會報錯。
cmake . -DCMAKE_INSTALL_PREFIX=/home/formal/mysql -DMYSQL_UNIX_ADDR=/home/formal/mysql/mysql_6603.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/home/formal/mysql/data -DMYSQL_USER=formal -DMYSQL_TCP_PORT=6603 -DWITHOUT_PARTITION_STORAGE_ENGINE=1
如圖9所示:

//查看“編譯過程檢查”【上一步執行任務是否成功】是否成功,0表示成功,其他標識失敗。
如圖10所示:

//常見編譯參數,可參考如下表,更多參數,請找度娘.(注:參數中的目錄以及端口根據個人情況而定)
如圖11所示:

8.編譯、安裝(此過程會耗費一段時間請耐心等待)
make && make install
如圖12所示:

//查看“編譯、安裝”【上一步執行任務是否成功】是否成功,0表示成功,其他標識失敗。
如圖13所示:

9.配置mysql
#復制mysql服務啟動配置文件,將mysql的啟動服務添加到系統服務中,並查看
cd /home/formal/mysql
cp support-files/my-medium.cnf ./my.cnf
如圖14所示:

注:在啟動MySQL服務時,會按照一定次序搜索my.cnf,先在/etc目錄下找,找不到則會搜索"$basedir/my.cnf",在本例中就是 /home/formal/mysql/my.cnf,這是新版MySQL的配置文件的默認位置!
#配置my.cnf 在mysqld下面添加
vi my.cnf
basedir = /home/formal/mysql/
datadir = /home/formal/mysql/data
如圖15所示:

#在log-bin=mysql-bin下面添加 防止磁盤被無限制占用
max_binlog_size=100M
expire_logs_days=7
如圖16所示:

#創建系統數據庫的表--指定了配置文件和用戶
scripts/mysql_install_db --defaults-file=./my.cnf --user=formal
如圖17所示:

//查看執行“創建系統數據庫的表--指定了配置文件和用戶”【上一步執行任務是否成功】是否成功,0表示成功,其他標識失敗。
如圖18所示:

10.設置mysql
#啟動mysql
cd /home/formal/mysql/bin
./mysqld_safe &
如圖19所示:

//登陸數據庫
#進入mysql命令行模式 修改Mysql的root用戶密碼以及打開遠程連接
./mysql -u root –p//無密碼,直接回車即可
如圖20所示:

#為root添加遠程連接的能力。
#修改密碼
#讓設置生效
use mysql;
grant all privileges on *.* to root@"%" identified by "root";
update user set Password = password('xushouweidb') where User='root';
flush privileges;
exit;
如圖21所示:

11.設置mysql服務跟隨系統自動啟動
方式一:采用配置服務的方式
cp /home/formal/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
方式二:使用定時任務執行腳本的方式
//我這里主要介紹定時任務執行腳本方式。方式一大家不妨參照網絡資源或者執行以上命令代碼形式,這里我不在多說!
//進入到/home/formal/目錄,在該目錄下創建task目錄
cd /home/formal/
mkdir task
ll
如圖22所示:

//進入到task目錄,創建mysql_auto_restart.sh以及mysql_auto_restart.log文件,並查看。
cd task/
touch mysql_auto_restart.sh mysql_auto_restart.log
ll
如圖23所示:

//編輯mysql_auto_restart.sh,添加如下腳本代碼,shell腳本編程,請參考網絡資源,我這里就不一一為大家介紹。
vi/vim mysql_auto_restart.sh
添加腳本代碼:
#!/bin/bash
#/usr/bin/nmap localhost | grep 3306
#lsof -i:3306
MYPORT=6603
MYSQLPORT=`netstat -na|grep "LISTEN"|grep $MYPORT|awk -F[:" "]+ 'NR==1 {print $4}'`
MYSQL=/home/formal/mysql/bin/mysql
MYUSER=root
MYPASS=xushouweidb
function checkMysqlStatus(){
$MYSQL -u$MYUSER -p$MYPASS --connect_timeout=5 -e "show databases;" &>/dev/null 2>&1
if [ $? -ne 0 ]
then
restartMysqlService
if [ "$MYSQLPORT" == $MYPORT ];then
echo `date`":$MYSQL restart successful......"
else
echo `date`":$MYSQL restart failure......"
echo `date`":$MYSQL is down, please try to restart mysql by manual!" > /var/log/mysqlerr
echo "這里發郵件。。"
fi
else
echo `date`":$MYSQL is running..."
fi
}
function restartMysqlService(){
echo `date`":try to restart the mysql service......"
/home/formal/mysql/bin/mysqld_safe
MYSQLPORT=`netstat -na|grep "LISTEN"|grep $MYPORT|awk -F[:" "]+ 'NR==1 {print $5}'`
}
if [ "$MYSQLPORT" == $MYPORT ]
then
checkMysqlStatus
else
restartMysqlService
fi
//插入以上代碼后按ESC->:wq保存退出即可!
如圖24所示:

//為mysql_auto_restart.sh執行腳本文件添加可執行權限
chmod +x ./mysql_auto_restart.sh
ll
如圖25所示:

//查看並添加定時執行任務
//執行該語句的時候可能會提示您:no crontab for formal
crontab -l
crontab -e
//添加定時任務代碼
* * * * * /home/formal/task/mysql_auto_restart.sh >> /home/formal/task/mysql_auto_restart.log
如圖26所示:

//執行mysql_auto_restart.sh腳本(這里你也可以不執行,因為已經設置了定時執行時間)
./mysql_auto_restart.sh
//如果mysql服務已經啟動會報如下信息,提示您已經啟動mysql服務
如圖27所示:

//使用root用戶重啟centos服務器,登陸服務器,並切換為formal用戶,登陸mysql。查看mysql服務是否跟隨機器啟動。
reboot
su - formal
cd /home/formal/mysql/bin
./mysql -uroot -pxushouweidb
如圖28所示:

至此,centos6.7使用非root用戶安裝mysql並使用定時任務執行腳本的方式隨機啟動mysql服務,流程已經走完,大家對立面錯別字或者其他問題有問題的話歡迎聯系我,我立刻改正,微信號:Jasxu360,謝謝!
