Linux下搭建MySQL多实例环境

本文详细介绍如何在Linux环境下通过源码编译的方式部署多个MySQL实例,包括安装所需工具、配置编译选项、启动和配置不同实例的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux Platform 部署 MySQL 多实例,其实就是把DATA,SOCK 指向不同的文件,并为不同实例指定不同的PORT。

前置条件:安装cmake工具、gcc工具

gcc一般的linux环境都已经安装,现在安装cmake

[root@localhost workspace]# wget http://www.cmake.org/files/v2.8/cmake-2.8.3.tar.gz

[root@localhost workspace]# tar xvf cmake-2.8.3.tar.gz

[root@localhost workspace]# cd cmake-2.8.3

[root@localhost workspace]# ./configure

[root@localhost workspace]# make & make install

下载mysql源码包

[root@localhost workspace]# wget http://downloads.mysql.com/archives/mysql-5.5/mysql-5.5.32.tar.gz

[root@localhost workspace]# tar xvf mysql-5.5.32.tar.gz

[root@localhost workspace]# cd mysql-5.5.32

安装第一个MySQL数据库

(1)创建所需要的文件目录

[root@localhost local]# cd /usr/local/

[root@localhost local]# mkdir mysql

[root@localhost local]# cd mysql/

[root@localhost mysql]# mkdir data

[root@localhost mysql]# mkdir etc

(2)配置MySQL源码编译选项

[root@localhost mysql-5.5.32]# cmake                     \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql    \
> -DMYSQL_DATADIR=/usr/local/mysql/data          \
> -DSYSCONFDIR=/usr/local/mysql/etc                   \
> -DWITH_MYISAM_STORAGE_ENGINE=1          \
> -DWITH_INNOBASE_STORAGE_ENGINE=1      \
> -DWITH_MEMORY_STORAGE_ENGINE=1        \
> -DWITH_READLINE=1                                          \
> -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock         \
> -DMYSQL_TCP_PORT=3306                               \
> -DENABLED_LOCAL_INFILE=1                           \
> -DWITH_PARTITION_STORAGE_ENGINE=1     \
> -DEXTRA_CHARSETS=all                                    \
> -DDEFAULT_CHARSET=utf8                               \
> -DDEFAULT_COLLATION=utf8_general_ci

(3)编译安装

[root@localhost mysql-5.5.32]# make & make install

(4)配置第一个MySQL实例

[root@localhost mysql-5.5.32]# cd /usr/local/mysql

[root@localhost mysql]# chown -R mysql:mysql .

[root@localhost mysql]# cp support-files/my-medium.cnf /usr/local/mysql/etc/my.cnf

[root@localhost mysql]# vi /usr/local/mysql/etc/my.cnf

添加 datadir=/usr/local/mysql/data
        default-storage-engine=MyISAM

[root@localhost mysql]# cd /usr/local/mysql/scripts/

[root@localhost scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data &

[root@localhost bin]# cd /usr/local/mysql/bin

[root@localhost bin]# ./mysqld_safe --user=root
[1] 28869
[root@localhost bin]# 131016 20:07:13 mysqld_safe Logging to '/usr/local/mysql/data/localhost.localdomain.err'.
131016 20:07:14 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

查看服务是否启动成功

[root@localhost bin]# netstat -tlnap | grep mysql
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      29147/mysqld

登录MySQL并修改root用户密码

[root@localhost bin]# ./mysqladmin -uroot password 'eisoo.com'

[root@localhost bin]# ./mysql -uroot -peisoo.com

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.32-log Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> exit

安装第二个MySQL数据库

(1)清理配置信息

[root@localhost bin]# cd /workspace/mysql-5.5.32
[root@localhost mysql-5.5.32]# make clean
[root@localhost mysql-5.5.32]# rm -rf CMakeCache.txt

(2)创建所需要的文件目录

[root@localhost mysql-5.5.32]# cd /usr/local/

[root@localhost local]# mkdir mysql3307

[root@localhost local]# cd mysql3307/

[root@localhost mysql3307]# mkdir data

[root@localhost mysql3307]# mkdir etc

(3)配置第二个实例的编译信息

[root@localhost bin]# cd /workspace/mysql-5.5.32

[root@localhost mysql-5.5.32]# cmake                     \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql3307    \
> -DMYSQL_DATADIR=/usr/local/mysql3307/data          \
> -DSYSCONFDIR=/usr/local/mysql3307/etc                   \
> -DWITH_MYISAM_STORAGE_ENGINE=1          \
> -DWITH_INNOBASE_STORAGE_ENGINE=1      \
> -DWITH_MEMORY_STORAGE_ENGINE=1        \
> -DWITH_READLINE=1                                          \
> -DMYSQL_UNIX_ADDR=/tmp/mysqld3307.sock         \
> -DMYSQL_TCP_PORT=3307                               \
> -DENABLED_LOCAL_INFILE=1                           \
> -DWITH_PARTITION_STORAGE_ENGINE=1     \
> -DEXTRA_CHARSETS=all                                    \
> -DDEFAULT_CHARSET=utf8                               \
> -DDEFAULT_COLLATION=utf8_general_ci

(4)编译安装

[root@localhost mysql-5.5.32]# make & make install

(5)配置第二个MySQL实例

[root@localhost mysql-5.5.32]# cd /usr/local/mysql3307

[root@localhost mysql3307]# chown -R mysql:mysql .

[root@localhost mysql3307]# cp support-files/my-medium.cnf /usr/local/mysql3307/etc/my.cnf

[root@localhost mysql3307]# vi /usr/local/mysql3307/etc/my.cnf

添加 datadir=/usr/local/mysql3307/data
        default-storage-engine=MyISAM

[root@localhost mysql3307]# cd /usr/local/mysql3307/scripts/

[root@localhost scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql3307 --datadir=/usr/local/mysql3307/data &

[root@localhost scripts]# cd /usr/local/mysql3307/bin

[root@localhost bin]# ./mysqld_safe --user=root

131016 20:40:27 mysqld_safe Logging to '/usr/local/mysql3307/data/localhost.localdomain.err'.
131016 20:40:27 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql3307/data

查看服务是否启动成功

[root@localhost bin]# netstat -tlnap | grep mysql

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      29147/mysqld       
tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      7447/mysqld

登录MySQL并修改root用户密码

[root@localhost bin]# ./mysqladmin -uroot password 'eisoo.com123'

[root@localhost bin]# ./mysql -uroot -peisoo.com123

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.32-log Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> exit

增加系统环境变量

[root@localhost /]# vi /etc/profile

增加一行:export PATH=/usr/local/mysql/bin:/usr/local/mysql3307/bin:$PATH

[root@localhost /]# source /etc/profile

[root@localhost /]# export $PATH

分别启动不同实例:

[root@localhost /]# mysqld_safe --user=root --port=3306 --socket=/tmp/mysqld.sock --datadir=/usr/local/mysql/data &

[root@localhost /]# mysqld_safe --user=root --port=3307 --socket=/tmp/mysqld3307.sock --datadir=/usr/local/mysql3307/data &

分别登陆不同实例:

[root@localhost /]# mysql -uroot -peisoo.com -S /tmp/mysqld.sock
[root@localhost /]# mysql -uroot -peisoo.com123 -S /tmp/mysqld3307.sock

启动还是太麻烦,可以这样做:

[root@localhost /]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql3306
[root@localhost /]# cp /usr/local/mysql3307/support-files/mysql.server /etc/init.d/mysql3307

给mysql用户添加权限:

[root@localhost /]# chmod -R 755 /usr/local/mysql/data
[root@localhost /]# chmod -R 755 /usr/local/mysql/data

分别启动实例对应的服务:

[root@localhost tmp]# service mysql3306 start
Starting MySQL.                                            [确定]
[root@localhost tmp]# service mysql3307 start
Starting MySQL.                                            [确定]

查看服务:

[root@localhost tmp]# netstat -tlnap | grep mysql
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      10759/mysqld       
tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      11097/mysqld

将服务添加到系统服务中,使其开机自动启动。

[root@localhost /]# chkconfig --add mysql3306
[root@localhost /]# chkconfig --add mysql3307

ps:在linux下可以启动n个mysql实例,如果两个不够,按照以上步骤可以继续安装,目前本人只会用源码包搭建,如果那位大神知道用rpm包在Red Hat Linux下搭建MySQL多实例环境,请多多指教!谢谢!


 

 

 

 

 


 

 

### 在Linux系统上安装和配置MySQL #### 解决方案概述 在Linux环境安装和配置MySQL可以通过多种方式实现,包括二进制包解压、RPM包安装以及通过YUM或APT等软件管理工具。以下是基于不同方法的详细说明。 --- #### 方法一:通过二进制包手动安装MySQL 这是最灵活的方式之一,适用于需要完全控制安装路径的情况。 1. **下载并解压MySQL压缩包** 使用`wget`或其他工具下载官方发布的MySQL二进制版本,并将其解压至指定目录。 ```bash sudo tar -xvf mysql-8.0.39-linux-glibc2.28-x86_64.tar.xz sudo mv mysql-8.0.39-linux-glibc2.28-x86_64 /usr/local/mysql ``` 2. **创建MySQL用户和组** 创建专门运行MySQL服务的用户和组以提高安全性。 ```bash sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql ``` 3. **更改所有权** 将MySQL目录的所有权更改为新创建的用户和组。 ```bash sudo chown -R mysql:mysql /usr/local/mysql/ ``` 4. **初始化数据目录** 初始化MySQL的数据存储区域。 ```bash /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data ``` 此操作会在日志中生成临时root密码[^1]。 5. **启动MySQL服务** 启动MySQL服务并将进程绑定到特定用户。 ```bash /usr/local/mysql/support-files/mysql.server start ``` 6. **设置环境变量** 修改`.bashrc`或全局配置文件以便于访问MySQL命令行工具。 ```bash echo 'export PATH=$PATH:/usr/local/mysql/bin' >> ~/.bashrc source ~/.bashrc ``` 7. **安全加固** 登录MySQL后执行安全脚本进一步保护实例。 ```bash mysql_secure_installation ``` --- #### 方法二:利用RPM包快速部署MySQL 这种方法适合Red Hat系发行版(如CentOS),能够简化依赖关系处理过程。 1. **准备必要的支持组件** 安装一些基础工具来辅助后续步骤顺利完成。 ```bash sudo yum install -y net-tools perl autoconf ``` 2. **导入官方仓库密钥** 添加Oracle提供的GPG key确保源可信度。 ```bash rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql ``` 3. **添加MySQL Yum Repository** 根据操作系统架构选择合适的URL地址。 ```bash wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm ``` 4. **实际安装服务器端程序** 开始正式安装MySQL Server部分。 ```bash sudo yum install -y mysql-server ``` 5. **启用并开启服务** 设置开机自启功能同时立即激活当前状态。 ```bash sudo systemctl enable mysqld sudo systemctl start mysqld ``` 6. **获取初始随机密码** 查看/var/log/mysqld.log文件定位首次登陆所需的凭证信息[^3]。 --- #### 方法三:借助APT工具自动化流程(Debian/Ubuntu) 对于Debian衍生系列的操作系统而言,APT提供了更为简便快捷的方法完成整个任务链路。 1. **更新本地索引缓存** 确保拥有最新可用资源列表。 ```bash sudo apt update && sudo apt upgrade -y ``` 2. **引入外部镜像站点链接** 编辑/etc/apt/sources.list追加对应入口描述语句。 ```plaintext deb http://archive.debian.org/debian buster-backports main contrib non-free ``` 3. **同步新增变更项** 再次刷新使得改动生效。 ```bash sudo apt-get update ``` 4. **实施核心模块加载动作** 明确指明目标名称从而触发关联行为序列展开运作机制。 ```bash sudo apt-get install -t buster-backports mysql-server -y ``` 5. **确认最终成果展示界面呈现形式是否正常运转无误** --- #### 配置优化建议 无论采用哪种途径构建起来的基础框架都需要额外关注几个方面才能达到理想效果: - **调整字符集参数** 编辑my.cnf加入如下内容避免乱码现象发生。 ```ini [client] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci ``` - **开放远程连接权限** 修改bind-address允许来自其他主机发起请求尝试建立通信桥梁。 ```sql GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpassword'; FLUSH PRIVILEGES; ``` - **增强身份认证策略灵活性** 如果遇到因插件不匹配引发拒绝访问状况可考虑切换传统模式解决矛盾冲突局面。 ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword'; ``` --- #### 总结 以上三种主要技术路线各有优劣之处,具体选用哪一种取决于个人偏好或者项目特殊需求场景等因素综合考量决定最佳实践方向。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值