前言

在开发环境中,我们需要多个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

lig1ptoa.png

查看实例初始化密码
cat /var/log/mysql/mysqld.log
lig1rwou.png
注意这里有三个密码,因为我们有三个实例,不要拿错了

改密码,注意密码的强度!要字母数字大小写加特别字符
mysqladmin -uroot -p'q2iwpiIjaJ-#' -S ../socket/mysql.sock password 'ycyawCOM996.'
改完密码后去mysqld脚本中把密码写进去
lig1v2rz.png

停止实例

/mysql/3306/bin/mysqld stop

连接实例

mysql -uroot -p -S /mysql/3306/socket/mysql.sock
然后输入密码就能连接了
如果是使用navicat这种工具,直接输入端口号即可

分类: Linux教程 标签: MySQL

评论

暂无评论数据

暂无评论数据

目录