服务器上多MySQL部署的方法

Hello,年更博主突然诈尸。读研之前规划自己要多读书,抽空可以自学一点渗透知识。读研之后才发现每天累得跟狗一样,有一点清闲时间只想躺床上睡觉。算了,不卷了,卷不动了,躺平了,体会一下咸鱼的快乐吧hhh。
今天突然想起来自己好像还有个blog(好吧其实是前几天阿里云提醒我机子到期该续费了。果然只有要钱的时候最积极),好像是好久没更了。那今天就来写写最近做的项目中的一小部分,如何在服务器上部署多个MySQL服务。
在服务器上部署MySQL用以提供数据库服务,这是很多机构或企业常用的方法。同时在一些特殊的需求下,企业需要在服务器上部署多个MySQL提供不同的服务以适应不同的需求。这就要求我们在服务器上部署多个MySQL服务,并分别运行在不同端口。
网上已经有好多这种教程,但是我发现很多教程并不适合我,所以在这里记录一下。

0x00 前提

1、环境

系统版本:Ubuntu 18.04 LTS
MySQL版本:MySQL-5.7.33

2、安装依赖库

1、安装编译所需前置库,命令如下:
$ sudo apt-get install make cmake gcc g++ bisonlibncurses5-dev build-essential
2、CMake时如果出现缺少openssl依赖,使用如下命令安装:
$ sudo apt-get install libssl-dev
3、CMake时如果出现缺少pkg-config依赖,使用如下命令安装:
$ sudo apt-get install pkg-config

3、设置用户名和组

使用如下命令设置用户名和组:

[root@localhost src]# groupadd mysql
[root@localhost src]# useradd -r -g mysql mysql

注意:
若系统中已经存在mysql用户或组后,建议创建新的用户和组(例如:系统中已存在mysql用户和组,则新创建用户和组为mysql5.7)。

0x01 安装第一个MySQL

如果系统中不存在MySQL数据库,可以先进行第一个数据库的安装。如果已经存在数据库,则直接跳过该步到0x02步即可。

1、CMake

进入源码文件夹后,进行CMake,命令如下:

# cmake  .  \
 -DCMAKE_INSTALL_PREFIX=/opt/mysql \
 -DMYSQL_DATADIR=/data/mysql \
 -DSYSCONFDIR=/etc \
 -DEXTRA_CHARSETS=all \
 -DDEFAULT_CHARSET=utf8 \
 -DDEFAULT_COLLATION=utf8_general_ci

参数解释:
-DCMAKE_INSTALL_PREFIX 安装路径(可以修改)
-DMYSQL_DATADIR 数据存储路径(可以修改)
-DSYSCONFDIR 配置文件路径(可以修改)
-DEXTRA_CHARSETS   安装扩展字符集(不建议修改)
-DDEFAULT_CHARSET 使用字符(不建议修改)
-DDEFAULT_COLLATION。 校验字符(不建议修改)
注意:
该MySQL数据库在安装时需要boost库,版本为1.59.0,如系统中存在,则无需安装。如果不存在,则可自行安装,或在CMake时添加参数安装,如下:

-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/root/boost \

其中:DWITH_BOOST参数为boost下载安装地址,可以自行修改。

2、make && make install

使用如下命令对数据库进行编译安装:

# make
# make install

时间较长,耐心等待。

3、设置Mysql目录权限

## 新建MYSQL数据文件目录
root@ubuntu:/opt/src/mysql-5.7.33# mkdir -p /data/mysql
## 修改MySQL目录所属的组和用户
root@ubuntu:/opt/mysql# chown -R mysql /opt/mysql
root@ubuntu:/opt/mysql# chgrp -R mysql /opt/mysql
## 修改MySQL数据目录所属的组和用户
root@ubuntu:/opt/mysql# chown -R mysql:mysql /data/mysql

注意:
1、其中,新建数据文件目录中的目录可自行设置,同上CMake设置的数据目录相同即可。
2、修改目录所属组和用户时修改的目录为安装目录和数据目录,同上CMake设置的数据目录相同即可。

4、初始化数据库

使用如下命令初始化数据库:

root@ubuntu:/opt/mysql# bin/mysqld --initialize-insecure --user=mysql --datadir=/data/mysql

注意:
1、先进入数据库安装目录后再进行操作。
2、参数 --datadir=为数据文件目录,使用前几步自行设置的路径。
3、初始化数据库使用的是initialize-insecure方式,即不生成初始密码方式。在登陆时在输入密码部分直接回车即可进入数据库。注意,在进入数据库后及时修改密码。

5、启动数据库

## 启动
root@ubuntu:/opt/mysql# support-files/mysql.server start
## 登录
root@ubuntu:/opt/mysql# bin/mysql -u root -p
## 修改密码
mysql> UPDATE mysql.user SET authentication_string=password('你想设置的密码') WHERE User='root';
mysql> flush privileges;

由此,第一个MySQL安装完成。

0x02 安装第X个(非第一个)MySQL

1、创建配置文件

这步是同网上大多数教程不同的地方。在MySQL-5.7.33源码编译安装后,不会生成一个新的配置文件,需要我们手动创建一个配置文件。所以我们首先创建一个新的配置文件,且不要和已存在的mysql配置文件冲突。
命名为my.cnf,写入如下内容:

[mysqld]
# 用户
user = mysql5.7
# 端口
port = 3307
# 安装路径
basedir = /opt/mysql5.7
# 数据文件路径
datadir = /data/mysql5.7

注意:
1、user为之前所创建的用户
2、port为mysql服务监听的端口,注意不要和已存在的服务冲突。
3、basedir为安装路径
4、datadir为数据文件存放路径

2、CMake

进入源码文件夹后,进行CMake,命令如下:

# cmake  .  \
-DCMAKE_INSTALL_PREFIX=/opt/mysql5.7 \
-DMYSQL_DATADIR=/data/mysql5.7 \
-DSYSCONFDIR=/etc/mysql5.7 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_TCP_PORT=3307 \
-DMYSQL_UNIX_ADDR=/tmp/mysqld5.7.sock

参数解释:
-DCMAKE_INSTALL_PREFIX 安装路径(可以修改)
-DMYSQL_DATADIR 数据存储路径(可以修改)
-DSYSCONFDIR 配置文件路径(可以修改)
-DEXTRA_CHARSETS   安装扩展字符集(不建议修改)
-DDEFAULT_CHARSET 使用字符(不建议修改)
-DDEFAULT_COLLATION。 校验字符(不建议修改)
-DMYSQL_TCP_PORT 监听端口号(可以修改)
-DMYSQL_UNIX_ADDR socket路径(可以修改)
注意:
1、该MySQL数据库在安装时需要boost库,版本为1.59.0,如系统中存在,则无需安装。如果不存在,则可自行安装,或在CMake时添加参数安装,如下:

-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/root/boost \

其中:DWITH_BOOST参数为boost下载安装地址,可以自行修改。
2、注意配置文件路径不要和已存在的mysql服务的配置文件冲突,路径为上面所创建的配置文件的路径。
3、注意端口号不要和已存在的服务的端口号冲突。
4、注意socket路径不要和已存在的服务冲突。

3、make && make install

使用如下命令对数据库进行编译安装:

# make
# make install

时间较长,耐心等待。

4、设置Mysql目录权限

## 新建MYSQL数据文件目录
root@ubuntu:/opt/src/mysql-5.7.33# mkdir -p /data/mysql5.7
## 修改MySQL目录所属的组和用户
root@ubuntu:/opt/mysql5.7# chown -R mysql5.7 /opt/mysql5.7
root@ubuntu:/opt/mysql5.7# chgrp -R mysql5.7 /opt/mysql5.7
## 修改MySQL数据目录所属的组和用户
root@ubuntu:/opt/mysql5.7# chown -R mysql5.7:mysql5.7 /data/mysql5.7

注意:
1、其中,新建数据文件目录中的目录可自行设置,同上CMake设置的数据目录相同即可。
2、修改目录所属组和用户时修改的目录为安装目录和数据目录,同上CMake设置的数据目录相同即可。
3、注意使用之前所新创建的用户和组。

5、初始化数据库

使用如下命令初始化数据库:

root@ubuntu:/opt/mysql5.7# bin/mysqld --defaults-file=/etc/mysql5.7/my.cnf --user=mysql5.7 --initialize-insecure

注意:
1、先进入数据库安装目录后再进行操作。
2、参数 --datadir=为数据文件目录,使用前几步自行设置的路径。
3、初始化数据库使用的是initialize-insecure方式,即不生成初始密码方式。在登陆时在输入密码部分直接回车即可进入数据库。注意,在进入数据库后及时修改密码。

6、修改启动参数

注意,此步为该部署的关键步骤!!!

进入安装路径的support-files文件夹,修改mysql.server文件。
使用编辑器打开,找到如下部分进行修改:
1、修改安装路径和数据文件存放路径:

basedir=/opt/mysql5.7
datadir=/data/mysql5.7

2、修改配置文件路径:
conf=/etc/mysql5.7/my.cnf
3、修改启动命令参数:
将:
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
添加默认配置文件参数,修改为:
$bindir/mysqld_safe --defaults-file=/etc/mysql5.7/my.cnf --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
4、修改parse_server_arguments:
注释掉下面的这条语句:

parse_server_arguments `$print_defaults $extra_args mysqld server mysql_server mysql.server`

上述所有需要添加修改的路径,都为在之前自行设置的路径。

7、启动数据库

## 启动
root@ubuntu:/opt/mysql# support-files/mysql.server start
## 登录
root@ubuntu:/opt/mysql# bin/mysql -u root -p
## 修改密码
mysql> UPDATE mysql.user SET authentication_string=password('你想设置的密码') WHERE User='root';
mysql> flush privileges;

由此,Mysql安装完成。

0x03 总结

由此,我们就可以配置多个MySQL数据库在一个服务器上。但是一定要注意的是不要同已存在的数据库发生冲突!
不知道年更博主的下一个博客是什么时候,希望我还能抽出时间吧hhh。读了研后就一个念头,能毕业就行,各位有缘再见吧

END
本文作者:
文章标题:服务器上多MySQL部署的方法
本文地址:http://www.hackerhome.top/index.php/archives/33/
版权说明:若无注明,本文皆由"岁月年华的秘密基地"原创,转载请保留文章出处。
最后修改:2021 年 10 月 31 日 06 : 56 PM
如果觉得我的文章对你有用,请随意赞赏