mysql 5 7 啟動指令碼

2022-08-20 04:21:13 字數 3629 閱讀 2977

整個編譯的過程是很長的,預設情況下,編譯的時候有指定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.sh

stop

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...