[mysql]linux安装多个mysql,以及systemctl配置mysql实战
环境
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)
代表启动成功
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)
代表启动成功
6. 如果失败,可以查看systemctl日志
journalctl -f |grep mysql_s
结果
最后运行 ps -ef|grep mysql
,可以看到两个mysql都运行在了linux,大功告成
其他
登录密码
第一次初始化mysql之后密码是默认的。默认密码通过 data/mysql.err查看
修改默认密码
切换到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即刻远程链接