[mysql]linux安装多个mysql,以及systemctl配置mysql实战

共 6031字,需浏览 13分钟

 ·

2021-04-04 08:37

0ec35c04b3c2eceea5f0f7804cfab768.webp



环境

Linux CentOS7.0mysqlmysql5.7安装方式 tar.gz二进制安装包


背景

由于需要多个数据库来做mysql集群。而多个mysql在windows上安装可以指定各种配置,而在linux由于使用yum安装的mysql,虽然安装很方便。各种文件配置以及路径不好由自己控制,不太好安装多个mysql。

所以本文不适用yum自动安装msyql。而使用二进制包手动指定各种配置来安装msyql,而自动安装的mysql默认加载到systemctl管理,手动的则么有,本文也详细的解说了mysql如何自定义service 加载的systemctl(如果不了解systemctl机制,可跳转到我上一篇博文)。


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安装路径上上诉已经说明


gourpadd mysql
useradd -r -g mysql mysql

mysql(mysql_m)的安装

1. 创建mysql数据目录(本文将数据目录放入mysql路径中),并给数据目录赋予权限

cd  /xinyuan/mysql_m
mkdir -p data
mkdir -p tmp

2. 赋予权限

这块必须给文件赋权限,因为msyql需要这几个目录读写文件

sudo chown mysql:mysql -R /xinyuan/mysql_m/data/
sudo chown mysql:mysql -R /xinyuan/mysql_m/tmp/

3. 配置配置文件

一般mysql的默认配置文件都在/etc/my.cnf。本文将my.cnf放入mysql路径中

vim /xinyuan/mysql_m/my.cnf

配置文件内容

[mysqld]
# bind-address=127.0.0.1 # mysql的监听地址,如果想要远程访问,就把这行注释掉
server-id = 1 # # 表示是本机的序号为1,一般来讲就是master的意思
port=3306 # 端口号
user=mysql # mysql以什么用户运行
basedir=/xinyuan/mysql_m # MySQL 的安装路径
datadir=/xinyuan/mysql_m/data # MySQL 数据文件的存储位置,也是数据表的存放位置
socket=/xinyuan/mysql_m/tmp/mysql.sock # mysql以socket方式运行的sock文件位置
log-error=/xinyuan/mysql_m/data/mysql.err # 错误日志位置
pid-file=/xinyuan/mysql_m/data/mysql.pid # 进程id文件
#character config
character_set_server=utf8mb4 # 服务器使用的字符集
symbolic-links=0 # 是否支持符号链接,即数据库或表可以存储在my.cnf中指定datadir之外的分区或目录,为0不开启
tmpdir=/xinyuan/mysql_m/tmp # #mysql默认配置得缓存目录 默认是/tmp


[mysql]
socket=/xinyuan/mysql_m/tmp/mysql.sock

4. 初始化mysql

这块指定默认加载的mysql配置文件

cd /xinyuan/mysql_m/bin
./mysqld --defaults-file=/xinyuan/mysql_m/my.cnf --user=mysql --initialize

mysql(mysql_s)的安装

与上面的mysql_m相同,只不过端口、安装路径以及配置文件里面的路径有变化

1. 创建mysql数据目录(本文将数据目录放入mysql路径中),并给数据目录赋予权限

cd  /xinyuan/mysql_s
mkdir -p data
mkdir -p tmp

2. 赋予权限

这块必须给文件赋权限,因为msyql需要这几个目录读写文件

sudo chown mysql:mysql -R /xinyuan/mysql_s/data/
sudo chown mysql:mysql -R /xinyuan/mysql_s/tmp/

3. 配置配置文件

一般mysql的默认配置文件都在/etc/my.cnf。本文将my.cnf放入mysql路径中

vim /xinyuan/mysql_s/my.cnf

配置文件内容

[mysqld]
# bind-address=127.0.0.1 # mysql的监听地址,如果想要远程访问,就把这行注释掉
server-id = 2 # # 表示是本机的序号为1,一般来讲就是master的意思
port=3307 # 端口号
user=mysql # mysql以什么用户运行
basedir=/xinyuan/mysql_s # MySQL 的安装路径
datadir=/xinyuan/mysql_s/data # MySQL 数据文件的存储位置,也是数据表的存放位置
socket=/xinyuan/mysql_s/tmp/mysql.sock # mysql以socket方式运行的sock文件位置
log-error=/xinyuan/mysql_s/data/mysql.err # 错误日志位置
pid-file=/xinyuan/mysql_s/data/mysql.pid # 进程id文件
#character config
character_set_server=utf8mb4 # 服务器使用的字符集
symbolic-links=0 # 是否支持符号链接,即数据库或表可以存储在my.cnf中指定datadir之外的分区或目录,为0不开启
tmpdir=/xinyuan/mysql_s/tmp # #mysql默认配置得缓存目录 默认是/tmp


[mysql]
socket=/xinyuan/mysql_s/tmp/mysql.sock

4. 初始化mysql

这块指定默认加载的mysql配置文件

cd /xinyuan/mysql_s/bin
./mysqld --defaults-file=/xinyuan/mysql_s/my.cnf --user=mysql --initialize

编写msyql主从的启动脚本

脚本目录 /xinyuan/mysql_shell

mysql_m的脚本

vim /xinyuan/mysql_shell/mysql_m.sh脚本内容

#!/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,但是这种方法需要用户名和输入密码
# /xinyuan/mysql_m/bin/mysqladmin shutdown -proot
# 方法二:直接关闭进程kill -9 [mysql的进程号]
mysql_m=`ps -ef|grep mysql_m |grep -v 'grep\|stop' | awk '{print $2}' `
kill -15 $mysql_m
else
echo "输入错误,请检查重新输入"
fi

赋予权限

chmod 777 mysql_m.sh

启动停止命令

./mysql_m.sh start
./mysql_m.sh stop

mysql_s的脚本

vim /xinyuan/mysql_shell/mysql_s.sh脚本内容

#!/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,但是这种方法需要用户名和输入密码
# /xinyuan/mysql_s/bin/mysqladmin shutdown -proot
# 方法二:直接关闭进程kill -9 [mysql的进程号]
mysql_s=`ps -ef|grep mysql_s |grep -v 'grep\|stop' | awk '{print $2}' `
kill -15 $mysql_s
else
echo "输入错误,请检查重新输入"
fi

赋予权限

chmod 777 mysql_s.sh

启动停止命令

./mysql_s.sh  start
./mysql_s.sh stop

将mysql加入systemctl管理,并设置关机保护

mysql_m

1. 创建.service文件路径
/usr/lib/systemd/system/
2. 创建mysql_m启动文件.service结尾

vim /usr/lib/systemd/system/mysql_m.service文件配置内容,具体的文件配置的说明,请查看我上一篇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.target
3. systemctl配置刷新
systemctl daemon-reload
4. 启动mysql_m服务
systemctl start mysql_m.service
5. 查看mysql_m启动状态
systemctl status mysql_m.service

active(runnint) 代表启动成功

f691c119a3a0a145bfc01f468b008945.webp

6. 如果失败,可以查看systemctl日志
journalctl -f |grep mysql_m

mysql_s

1. 创建.service文件路径
/usr/lib/systemd/system/
2. 创建mysql_m启动文件.service结尾

vim /usr/lib/systemd/system/mysql_s.service文件配置内容,具体的文件配置的说明,请查看我上一篇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.target
3. systemctl配置刷新
systemctl daemon-reload
4. 启动mysql_s服务
systemctl start mysql_s.service
5. 查看mysql_s启动状态
systemctl status mysql_s.service

active(runnint) 代表启动成功

0259f5447641d6be22e3e7412b007869.webp

6. 如果失败,可以查看systemctl日志
journalctl -f |grep mysql_s

结果

最后运行 ps -ef|grep mysql,可以看到两个mysql都运行在了linux,大功告成

39d68219e7fff98f816cd15ce6b94d10.webp


其他

登录密码

第一次初始化mysql之后密码是默认的。默认密码通过 data/mysql.err查看

641d177745e44fa622a5368becf031bc.webp

修改默认密码

切换到bin目录然后运行(由于我们sock文件制定到mysql目录下的tmp下,所以我们需要加上-S参数指定连接sock)

./mysql -uroot -p -S ../tmp/mysql.sock

输入密码,然后进入mysql控制台,然后更改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

远程链接配置

将root设置为任何ip都能拿他登录

use mysql;
update user set host = '%' where user = 'root';

然后重启mysql即刻远程链接

                              作者在留言区等你哟

浏览 56
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报