Mysql-单机多实例按照

简介

起因是因为在一次mysql的数据库中导入导出中的把导入库的密码也重置了,想确认是否是因为导入导出的造成的,特此周围也没有合适的Mysql环境,特从单机搭建多实例mysql,特此记录下。

环境

VM虚拟机
系统版本:CentOS Linux release 7.3.1611 (Core)
数据库版本:mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

部署

环境准备

  • 一台Linux服务器,配置根据业务流量来调整
  • MySQL安装包可去MySQL官网下载

安装Mysql

  • 解压压缩包并更名为mysql

    1
    2
    tar xf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
    mv mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz /usr/local/mysql
  • 配置my.cnf文件

在mysql文件夹下面创建data/{3306,3307} 文件夹(保存数据库数据,也可以放在其他的位置)
在mysql文件夹下面创建tmp/{3306,3307} 文件夹
创建my.cnf配置文件,(单机只有一个数据库不用配置,单机多数据库必须创建, 并配置相应的内容,多实例需要多个my.cnf文件:my3306.cnf my3307.cnf)
其实就是MySQL组件公用,根据不通的数据目录来区分不通的实例,不同的数据目录就是根据my.cnf来区分的,sock在连接不同的实例的时候需要指定

my3306.cnf

1
2
3
4
5
6
7
8
[client]
socket = /usr/local/mysql/mysql3306.sock

[mysqld]
basedir= /usr/local/mysql
datadir = /usr/local/mysql/data/3306/
port = 3306
socket = /usr/local/mysql/mysql3306.sock

my3307.cnf

1
2
3
4
5
6
7
8
[client]
socket = /usr/local/mysql/mysql3307.sock

[mysqld]
basedir= /usr/local/mysql
datadir = /usr/local/mysql/data/3307/
port = 3307
socket = /usr/local/mysql/mysql3307.sock

更改MySQL的用户和权限

1
2
3
4
groupadd mysql
useradd mysql -g mysql
chown -R mysql:mysql /usr/local/mysql/
chmod -R 755 /usr/local/mysql/

安装依赖包

1
yum -y install make gcc-c++ cmake bison-devel ncurses-devellibaio libaio-devel

数据库初始化

两种方式初始化:\

一种直接初始化,使用默认的配置文件,不用指定

1
/usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql

最后一行可以得到初始化之后的密码 类似:

[Note] A temporary password is generated for root@localhost: <gxU*CxtK2k%

另外一种指定配置文件初始化:

不同实例初始化更改指向的my3306.cnf地址即可

1
2
3
/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my3306.cnf --initialize --user=mysql
/usr/local/mysql/bin/mysql_ssl_rsa_setup --defaults-file=/usr/local/mysql/my3306.cnf

多机的情况下必须主要my.cnf文件的位置:

5.7版本寻找my.cnf的文件的顺序是

/etc/my.cnf       /etc/mysql/my.cnf        /usr/local/mysql/etc/my.cnf          ~/.my.cnf 

所以,要想使用到当前数据库自己文件夹下的的my.cnf文件,就必须在前面的三个文件的地址上面没有配置文件才可以

启动数据库

前台启动:

1
2
/usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/my3306.cnf  --user=mysql
/usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/my3307.cnf --user=mysql

服务启动:

1
/usr/local/mysql/support-files/mysql.server start

修改数据库密码

登录更改密码:
    第一个数据库可以直接使用进入\

1
/usr/local/mysql/bin/mysql -u root -p

    第二个数据库必须使用进入

1
2
/usr/local/mysql/bin/mysql --socket=/usr/local/mysql/mysql3306.sock --port==3306 -u root -p
/usr/local/mysql/bin/mysql --socket=/usr/local/mysql/mysql3307.sock --port==3306 -u root -p

使用初始化的时候得到的密码 <gxU*CxtK2k%
进入后直接修改密码

1
2
3
4
5
6
7

mysql>alter user 'root'@'localhost' identified by '123456';
mysql>use mysql;
msyql>update user set user.Host='%' where user.User='root';
mysql>flush privileges;
mysql>quit

创建连接(可选)

mysql命令

1
2
3

ln -s /usr/local/mysql/bin/mysql /usr/bin

service mysql 命令

1
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

本文主要借鉴下文

版权声明:本文为CSDN博主「梦回绝鸢」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013317181/article/details/77943722


Mysql-单机多实例按照
https://imwang77.github.io/2020/05/19/Mysql_单机多实例安装/
作者
imwang77
发布于
2020年5月19日
更新于
2024年1月3日
许可协议