mysql8的多实例如何实现(yum安装)
前言
在开发环境中,我们需要多个mysql实例的情况下如何能避免端口冲突?并且做好规划合理的安排实例的各个空间。
本文可以详细讲解通过yum安装的mysql8如何做多实例。
环境说明
操作系统:centos8
MySQL版本:8.0.26-1
安装方式:yum
安装MySQL8
yum install -y mysql-server
规划目录
mkdir -p /mysql/{3306,3307,3308}/{data,pid,bin,etc,socket,log}
初始化数据目录
mysqld --initialize --user=mysql --datadir=/mysql/3306/data/
注意:每个实例的数据目录都需要初始化,我这里只写了一个示例
配置文件
vim /mysql/3306/etc/my.cnf
[mysqld]
port=3306
datadir=/mysql/3306/data
socket=/mysql/3306/socket/mysql.sock
log-error=/mysql/3306/log/mysql.log
pid-file=/mysql/3306/pid/mysql.pid
然后分别改关键词后传到另外几个示例的配置文件中sed 's/3306/3308/' /mysql/3306/etc/my.cnf > /mysql/3308/etc/my.cnf
sed 's/3306/3307/' /mysql/3306/etc/my.cnf > /mysql/3307/etc/my.cnf
启动脚本
vim /mysql/3306/bin/mysqld
#!/bin/bash
port=3306
mysql_user="root"
mysql_pwd="ycyawCOM996."
cmd_path="/usr/bin"
mysql_basedir="/mysql"
mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock"
function_start_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "Starting MySQL...\n"
mysqld --defaults-file=${mysql_basedir}/${port}/etc/my.cnf --user=${mysql_user} &> /dev/null &
else
printf "MySQL is running...\n"
exit
fi
}
function_stop_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "MySQL is stopped...\n"
exit
else
printf "Stoping MySQL...\n"
mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
fi
}
function_restart_mysql()
{
printf "Restarting MySQL...\n"
function_stop_mysql
sleep 2
function_start_mysql
}
case $1 in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
restart)
function_restart_mysql
;;
*)
printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n"
esac
把启动脚本放进去之后需要把相对的文件赋予权限
chown -R mysql.mysql /mysql
并且给脚本执行权限chmod +x /mysql/3306/bin/mysqld
启动实例完成密码初始化
启动实例
/mysql/3306/bin/mysqld start
查看端口是否启动
ss -luntp
查看实例初始化密码
cat /var/log/mysql/mysqld.log
注意这里有三个密码,因为我们有三个实例,不要拿错了
改密码,注意密码的强度!要字母数字大小写加特别字符
mysqladmin -uroot -p'q2iwpiIjaJ-#' -S ../socket/mysql.sock password 'ycyawCOM996.'
改完密码后去mysqld脚本中把密码写进去
停止实例
/mysql/3306/bin/mysqld stop
连接实例
mysql -uroot -p -S /mysql/3306/socket/mysql.sock
然后输入密码就能连接了
如果是使用navicat这种工具,直接输入端口号即可
本文系作者 @亦秋先生 原创发布在亦秋先生博客站点。未经许可,禁止转载。
暂无评论数据