整個編譯的過程是很長的,預設情況下,編譯的時候有指定basedir和datadir,這兩個路徑是預設的,在後續資料庫初始化的過程中,可以對不同的情況再定義。編譯完成後,就可以make && make install了。
如果是帶boost的原始碼,也要指定dwith_boost=../boost,這個是相對路徑
安裝完成後,需要對資料庫進行初始化,這個時候,可以設定初始化的datadir,後期的資料庫就應用在這個目錄中。在初始化過程中,相比於5.5有點區別,5.5初始化完成後,預設登入資料庫是不需要密碼的。而在5.7,--initialize-insecure 和--initialize有兩個option,這兩個屬性有乙個區別,就是在initialize時候,會為root@localhost生成乙個隨機密碼,該密碼會寫到資料庫日誌中,通過grep log就可以得到該密碼,然後在登入的時候使用該密碼,登入進去之後,通過update進行修改,而--initialize-insecure在初始化的時候,跟5.5一樣,不會用root使用者生成密碼,直接空密碼就可以登入。
初始化的時候,指定了pid、socket等檔案位置,預設直接會在data目錄下,生成乙個以主機名命名的log檔案,在初始化的時候,直接在螢幕上輸出了一段話,表示沒有密碼。
2018-07-05t00:14:59.891294z 1 [warning] root@localhost is created with an empty password ! please consider switching off the --initialize-insecure option.
還是要注意,在整個mysql的basedir和datadir下,檔案的屬主和陣列都要是mysql啟動使用者,也就是mysql.mysql。
由於是自定義原始碼安裝,mysql的啟動指令碼就沒法直接用了,想著自己寫乙個指令碼,來控制這個mysql5.7的啟動和停止。下面是**內容。
bindir=$basedir/bin
mysql_bin=$bindir/mysqld_safe
mysqladmin=/usr/local/mysql/bin/mysqladmin
datadir=/data/mysql57/3307/data
mycnf=/data/mysql57/3307/my.cnf
port=3307
socket=`grep socket $mycnf|grep $port|awk''
`usage()"}
mysqld_start()
mysqld_stop()
main()
main $*
在這段**中,基本上都是很普通的啟動和停止功能,判斷是否啟動,是根據程序來區分的,基於配置檔案中的內容進行判斷,另外,由於mysql在啟動的時候有延時,不能啟動了立即判斷是否有程序,所以需要在啟動指令碼的時候進行sleep,一般2秒就足夠。下面測試一下指令碼的可用性。
[root@server129 bin]# sh mysql_server.shstop
2018-07-09t01:33:11.096443z mysqld_safe mysqld from pid file /data/mysql57/3307/tmp/3307_pid ended
0the mysql server stopping [ ok ]
[root@server129 bin]#
sh mysql_server.sh
stop
the mysql server is not running
[root@server129 bin]#
sh mysql_server.sh
reload
the mysql server is not running
2018-07-09t01:33:22.379632z mysqld_safe logging to '
/data/mysql57/3307/data/server129.err'.
2018-07-09t01:33:22.411184z mysqld_safe starting mysqld daemon with databases from /data/mysql57/3307/data
the mysql server starting [ ok ]
[root@server129 bin]#
sh mysql_server.sh
stop
2018-07-09t01:33:30.241711z mysqld_safe mysqld from pid file /data/mysql57/3307/tmp/3307_pid ended
0the mysql server stopping [ ok ]
[root@server129 bin]#
sh mysql_server.sh
start
2018-07-09t01:33:33.846842z mysqld_safe logging to '
/data/mysql57/3307/data/server129.err'.
2018-07-09t01:33:33.878461z mysqld_safe starting mysqld daemon with databases from /data/mysql57/3307/data
the mysql server starting [ ok ]
[root@server129 bin]#
基本功能貌似都很合理,但是有一些確定,比如在啟動的時候,這些指令碼輸出,如何不讓顯示。
今天又考慮一下這個指令碼,當多個位址,使用相同的埠時候,這個指令碼就不好用了,下面想著另外的乙個判斷條件,ip:port,每個例項都是唯一的,所以這個方法就可以了。
#!/bin/bash[ -f /etc/init.d/functions ] && . /etc/init.d/functions
bindir=$basedir/bin
mysql_bin=$bindir/mysqld_safe
mysqladmin=/usr/local/mysql/bin/mysqladmin
homedir=/data/mysql57/3307
datadir=$homedir/data
mycnf=$homedir/my.cnf
dev=eth0
ip=`ip addr|grep -e "
$dev\$
"|grep inet|awk
''|cut -d '
/' -f 1
`port=3307
socket=`grep socket $mycnf|grep $homedir|awk''
`usage()"}
#[[
"`netstat -ltnup|grep mysqld|awk ''`
" == "
$ip:$port"]]
mysqld_start()
mysqld_stop()
main()
main $*
mysql5 7安裝指令碼
在root使用者下建立mysqlinstall.sh 然後vim mysqlinstall.sh 編輯指令碼 將如下資訊貼上進去 sh mysqlinstall.sh 執行指令碼即可 指令碼內容如下 bin bash echo mysql5.7開始安裝 關閉selinux和防火牆 setenforc...
mysql 57無法啟動。
1.問題 c program files mysql mysql server 5.7 bin net start mysql mysql 服務正在啟動 mysql 服務無法啟動。2.原因 現在還是未知 mysql consle 看到的問題是 可是我的my.ini中的路徑指向都是 3。解決 重新初始...
Mysql 5 7 編譯安裝指令碼
bin bash automatic deployment mysql 自動部署 mysql 2019年7月1日 yum y update definition originallybr pass nicai 123 wget boost wget mysql install download yu...