Skip to content

MySQL多版本单服务器共存

方跃明 2019-05-13

MySQL 8

常规安装 MySQL 8

MySQL 5.7

依赖

shell
# 通常依赖早已被安装,可事先使用`yum list installed | gerp -E "make|gcc-c++..."`查询
yum -y install make gcc-c++ cmake bison-devel ncurses ncurses-devel libaio-devel

下载

shell
# 由于服务器环境是CentOS i386,选择5.7版本的Linux Generic的i686版本
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-i686.tar.gz

解压

shell
# 解压到`/opt`目录
tar -xzvf mysql-5.7.25-linux-glibc2.12-i686.tar.gz -C /opt

目录

/opt/mysql-5.7.25-linux-glibc2.12-i686
|-- bin                 # 命令
|-- data                # 数据
|-- log                 # 日志
|-- support-files       # 支持
|   `-- mysql.server    # 服务
|-- mysql.sock          # 端口
`-- my.cnf              # 配置

配置

ini
# my.cnf
# 为了防止乱码建议设定默认编码格式为:utf8mb4
[mysqld]
port=3307
basedir=/opt/mysql-5.7.25-linux-glibc2.12-i686
datadir=/opt/mysql-5.7.25-linux-glibc2.12-i686/data
socket=/opt/mysql-5.7.25-linux-glibc2.12-i686/mysql.sock
log-error=/opt/mysql-5.7.25-linux-glibc2.12-i686/log/error.log
default-character-set=utf8mb4
[client]
port=3307
socket=/opt/mysql-5.7.25-linux-glibc2.12-i686/mysql.sock
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

权限

shell
groupadd mysql
useradd mysql -g mysql
chown -R mysql:mysql /opt/mysql-5.7.25-linux-glibc2.12-i686/
chmod -R 755 /opt/mysql-5.7.25-linux-glibc2.12-i686/

服务

ini
# support-files/mysql.server 对应的部分修改为
basedir=/opt/mysql-5.7.25-linux-glibc2.12-i686
datadir=/opt/mysql-5.7.25-linux-glibc2.12-i686/data
conf=/opt/mysql-5.7.25-linux-glibc2.12-i686/etc/my.cnf

初始化

shell
./bin/mysqld --defaults-file=my.cnf --initialize --user=mysql &
# 请务必留意输出的`temporary password`部分,获得`root`初始密码
./support-files/mysql.server start

命令行

shell
./bin/mysql --socket=mysql.sock --port=3307 -u root -p
# 输入获得的初始密码,以root身份进入系统,进行必要的初期操作
# 建议开启高强度密码验证插件:
# install plugin validate_password soname 'validate_password.so'

脚本

shell
#!/bin/bash
mysql=/opt/mysql-5.7.25-linux-glibc2.12-i686
if [[ $1 == '--help' ]];then                # 帮助
  echo -e "${0} [start | stop | --help]"
elif [[ $1 == 'start' ]];then               # 启动服务器
  ${mysql}/bin/mysqld --defaults-file=${mysql}/my.cnf & \
  ${mysql}/support-files/mysql.server start
elif [[ $1 == 'stop' ]];then                # 停止服务器
  ${mysql}/bin/mysqladmin --socket=${mysql}/mysql.sock --port=3307 shutdown -uroot -ppass
else                                        # 进入命令行
  ${mysql}/bin/mysql --socket=${mysql}/mysql.sock --port=3307 -uroot -ppass
fi
MySQL
Linux
CentOS