[mysql]linux安裝多個(gè)mysql,以及systemctl配置mysql實(shí)戰(zhàn)

環(huán)境
Linux?CentOS7.0mysqlmysql5.7安裝方式?tar.gz二進(jìn)制安裝包
貳背景
由于需要多個(gè)數(shù)據(jù)庫(kù)來(lái)做mysql集群。而多個(gè)mysql在windows上安裝可以指定各種配置,而在linux由于使用yum安裝的mysql,雖然安裝很方便。各種文件配置以及路徑不好由自己控制,不太好安裝多個(gè)mysql。
所以本文不適用yum自動(dòng)安裝msyql。而使用二進(jìn)制包手動(dòng)指定各種配置來(lái)安裝msyql,而自動(dòng)安裝的mysql默認(rèn)加載到systemctl管理,手動(dòng)的則么有,本文也詳細(xì)的解說(shuō)了mysql如何自定義service 加載的systemctl(如果不了解systemctl機(jī)制,可跳轉(zhuǎn)到我上一篇博文)。
叁mysql安裝
安裝路徑主mysql:/xinyuan/mysql_m從mysql:/xinyuan/mysql_s
前提工作
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.26-linux-glibc2.12-x86_64 /xinyuan/mysql_m
本文的mysql安裝路徑上上訴已經(jīng)說(shuō)明
gourpadd mysql
useradd -r -g mysql mysqlmysql(mysql_m)的安裝
1. 創(chuàng)建mysql數(shù)據(jù)目錄(本文將數(shù)據(jù)目錄放入mysql路徑中),并給數(shù)據(jù)目錄賦予權(quán)限
cd /xinyuan/mysql_m
mkdir -p data
mkdir -p tmp
2. 賦予權(quán)限
這塊必須給文件賦權(quán)限,因?yàn)閙syql需要這幾個(gè)目錄讀寫(xiě)文件
sudo chown mysql:mysql -R /xinyuan/mysql_m/data/
sudo chown mysql:mysql -R /xinyuan/mysql_m/tmp/
3. 配置配置文件
一般mysql的默認(rèn)配置文件都在/etc/my.cnf。本文將my.cnf放入mysql路徑中
vim /xinyuan/mysql_m/my.cnf
配置文件內(nèi)容
[mysqld]
# bind-address=127.0.0.1 # mysql的監(jiān)聽(tīng)地址,如果想要遠(yuǎn)程訪問(wèn),就把這行注釋掉
server-id = 1 # # 表示是本機(jī)的序號(hào)為1,一般來(lái)講就是master的意思
port=3306 # 端口號(hào)
user=mysql # mysql以什么用戶(hù)運(yùn)行
basedir=/xinyuan/mysql_m # MySQL 的安裝路徑
datadir=/xinyuan/mysql_m/data # MySQL 數(shù)據(jù)文件的存儲(chǔ)位置,也是數(shù)據(jù)表的存放位置
socket=/xinyuan/mysql_m/tmp/mysql.sock # mysql以socket方式運(yùn)行的sock文件位置
log-error=/xinyuan/mysql_m/data/mysql.err # 錯(cuò)誤日志位置
pid-file=/xinyuan/mysql_m/data/mysql.pid # 進(jìn)程id文件
#character config
character_set_server=utf8mb4 # 服務(wù)器使用的字符集
symbolic-links=0 # 是否支持符號(hào)鏈接,即數(shù)據(jù)庫(kù)或表可以存儲(chǔ)在my.cnf中指定datadir之外的分區(qū)或目錄,為0不開(kāi)啟
tmpdir=/xinyuan/mysql_m/tmp # #mysql默認(rèn)配置得緩存目錄 默認(rèn)是/tmp
[mysql]
socket=/xinyuan/mysql_m/tmp/mysql.sock
4. 初始化mysql
這塊指定默認(rèn)加載的mysql配置文件
cd /xinyuan/mysql_m/bin
./mysqld --defaults-file=/xinyuan/mysql_m/my.cnf --user=mysql --initialize
mysql(mysql_s)的安裝
與上面的mysql_m相同,只不過(guò)端口、安裝路徑以及配置文件里面的路徑有變化
1. 創(chuàng)建mysql數(shù)據(jù)目錄(本文將數(shù)據(jù)目錄放入mysql路徑中),并給數(shù)據(jù)目錄賦予權(quán)限
cd /xinyuan/mysql_s
mkdir -p data
mkdir -p tmp
2. 賦予權(quán)限
這塊必須給文件賦權(quán)限,因?yàn)閙syql需要這幾個(gè)目錄讀寫(xiě)文件
sudo chown mysql:mysql -R /xinyuan/mysql_s/data/
sudo chown mysql:mysql -R /xinyuan/mysql_s/tmp/
3. 配置配置文件
一般mysql的默認(rèn)配置文件都在/etc/my.cnf。本文將my.cnf放入mysql路徑中
vim /xinyuan/mysql_s/my.cnf
配置文件內(nèi)容
[mysqld]
# bind-address=127.0.0.1 # mysql的監(jiān)聽(tīng)地址,如果想要遠(yuǎn)程訪問(wèn),就把這行注釋掉
server-id = 2 # # 表示是本機(jī)的序號(hào)為1,一般來(lái)講就是master的意思
port=3307 # 端口號(hào)
user=mysql # mysql以什么用戶(hù)運(yùn)行
basedir=/xinyuan/mysql_s # MySQL 的安裝路徑
datadir=/xinyuan/mysql_s/data # MySQL 數(shù)據(jù)文件的存儲(chǔ)位置,也是數(shù)據(jù)表的存放位置
socket=/xinyuan/mysql_s/tmp/mysql.sock # mysql以socket方式運(yùn)行的sock文件位置
log-error=/xinyuan/mysql_s/data/mysql.err # 錯(cuò)誤日志位置
pid-file=/xinyuan/mysql_s/data/mysql.pid # 進(jìn)程id文件
#character config
character_set_server=utf8mb4 # 服務(wù)器使用的字符集
symbolic-links=0 # 是否支持符號(hào)鏈接,即數(shù)據(jù)庫(kù)或表可以存儲(chǔ)在my.cnf中指定datadir之外的分區(qū)或目錄,為0不開(kāi)啟
tmpdir=/xinyuan/mysql_s/tmp # #mysql默認(rèn)配置得緩存目錄 默認(rèn)是/tmp
[mysql]
socket=/xinyuan/mysql_s/tmp/mysql.sock
4. 初始化mysql
這塊指定默認(rèn)加載的mysql配置文件
cd /xinyuan/mysql_s/bin
./mysqld --defaults-file=/xinyuan/mysql_s/my.cnf --user=mysql --initialize
編寫(xiě)msyql主從的啟動(dòng)腳本
腳本目錄 /xinyuan/mysql_shell
mysql_m的腳本
vim /xinyuan/mysql_shell/mysql_m.sh腳本內(nèi)容
#!/bin/bash
d=`date "+%y-%m/%d %H:%M:%S"`
echo "$1$d"
if [ $1 = "start" ]; then
echo "$d mysql_m start "
nohup /xinyuan/mysql_m/bin/mysqld --defaults-file=/xinyuan/mysql_m/my.cnf --user=mysql >> mysql_m.log 2>&1 &
elif [ $1 = "stop" ]; then
echo "$d mysql_m stop"
# 方法一:利用mysqladmin,但是這種方法需要用戶(hù)名和輸入密碼
# /xinyuan/mysql_m/bin/mysqladmin shutdown -proot
# 方法二:直接關(guān)閉進(jìn)程kill -9 [mysql的進(jìn)程號(hào)]
mysql_m=`ps -ef|grep mysql_m |grep -v 'grep\|stop' | awk '{print $2}' `
kill -15 $mysql_m
else
echo "輸入錯(cuò)誤,請(qǐng)檢查重新輸入"
fi
賦予權(quán)限
chmod 777 mysql_m.sh啟動(dòng)停止命令
./mysql_m.sh start
./mysql_m.sh stop
mysql_s的腳本
vim /xinyuan/mysql_shell/mysql_s.sh腳本內(nèi)容
#!/bin/bash
d=`date "+%y-%m/%d %H:%M:%S"`
echo "$1$d"
if [ $1 = "start" ]; then
echo "$d mysql_s start "
nohup /xinyuan/mysql_s/bin/mysqld --defaults-file=/xinyuan/mysql_s/my.cnf --user=mysql >> mysql_m.log 2>&1 &
elif [ $1 = "stop" ]; then
echo "$d mysql_s stop"
# 方法一:利用mysqladmin,但是這種方法需要用戶(hù)名和輸入密碼
# /xinyuan/mysql_s/bin/mysqladmin shutdown -proot
# 方法二:直接關(guān)閉進(jìn)程kill -9 [mysql的進(jìn)程號(hào)]
mysql_s=`ps -ef|grep mysql_s |grep -v 'grep\|stop' | awk '{print $2}' `
kill -15 $mysql_s
else
echo "輸入錯(cuò)誤,請(qǐng)檢查重新輸入"
fi
賦予權(quán)限
chmod 777 mysql_s.sh啟動(dòng)停止命令
./mysql_s.sh start
./mysql_s.sh stop
將mysql加入systemctl管理,并設(shè)置關(guān)機(jī)保護(hù)
mysql_m
1. 創(chuàng)建.service文件路徑
/usr/lib/systemd/system/2. 創(chuàng)建mysql_m啟動(dòng)文件.service結(jié)尾
vim /usr/lib/systemd/system/mysql_m.service文件配置內(nèi)容,具體的文件配置的說(shuō)明,請(qǐng)查看我上一篇systemctl的博文
[Unit]
Description=Mysql_m
SourcePath=/xinyuan/mysql_shell
Before=shutdown.target
[Service]
User=root
Type=forking
ExecStart=/xinyuan/mysql_shell/mysql_m.sh start
ExecStop=/xinyuan/mysql_shell/mysql_m.sh stop
[Install]
WantedBy=multi-user.target3. systemctl配置刷新
systemctl daemon-reload
4. 啟動(dòng)mysql_m服務(wù)
systemctl start mysql_m.service
5. 查看mysql_m啟動(dòng)狀態(tài)
systemctl status mysql_m.service
active(runnint)?代表啟動(dòng)成功

6. 如果失敗,可以查看systemctl日志
journalctl -f |grep mysql_m
mysql_s
1. 創(chuàng)建.service文件路徑
/usr/lib/systemd/system/2. 創(chuàng)建mysql_m啟動(dòng)文件.service結(jié)尾
vim /usr/lib/systemd/system/mysql_s.service文件配置內(nèi)容,具體的文件配置的說(shuō)明,請(qǐng)查看我上一篇systemctl的博文
[Unit]
Description=Mysql_s
SourcePath=/xinyuan/mysql_shell
Before=shutdown.target
[Service]
User=root
Type=forking
ExecStart=/xinyuan/mysql_shell/mysql_s.sh start
ExecStop=/xinyuan/mysql_shell/mysql_s.sh stop
[Install]
WantedBy=multi-user.target3. systemctl配置刷新
systemctl daemon-reload
4. 啟動(dòng)mysql_s服務(wù)
systemctl start mysql_s.service
5. 查看mysql_s啟動(dòng)狀態(tài)
systemctl status mysql_s.service
active(runnint)?代表啟動(dòng)成功

6. 如果失敗,可以查看systemctl日志
journalctl -f |grep mysql_s肆
結(jié)果
最后運(yùn)行?ps -ef|grep mysql,可以看到兩個(gè)mysql都運(yùn)行在了linux,大功告成

其他
登錄密碼
第一次初始化mysql之后密碼是默認(rèn)的。默認(rèn)密碼通過(guò) data/mysql.err查看

修改默認(rèn)密碼
切換到bin目錄然后運(yùn)行(由于我們sock文件制定到mysql目錄下的tmp下,所以我們需要加上-S參數(shù)指定連接sock)
./mysql -uroot -p -S ../tmp/mysql.sock
輸入密碼,然后進(jìn)入mysql控制臺(tái),然后更改密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
遠(yuǎn)程鏈接配置
將root設(shè)置為任何ip都能拿他登錄
use mysql;
update user set host = '%' where user = 'root';
然后重啟mysql即刻遠(yuǎn)程鏈接
??????????????????????????????作者在留言區(qū)等你喲
