CentOS7.5下安装 mysql5.7(glibc版)以及实现多实例

1. 下载glibc版的MySQL安装包

进入MySQL官网(https://www.mysql.com

点击“DOWNLOADS”

滑动到页面最下面,点击“MySQL Community Server”

点击“Looking for previous GA versions?”

选择要下载的版本

点击“No thanks, just start my download.”开始下载

2. MySQL二进制安装

2.1 环境准备

检查是否已经安装了MySQL或者是MariaDB,如果已经安装,则先把安装的卸载

rpm -qa |grep mysql

rpm -qa |grep mariadb

yum remove -y mariadb*

2.2 创建软件目录

mkdir -p /application

上传软件到此目录

2.3 解压并改名为mysql

tar -zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

mv mysql-5.7.28-linux-glibc2.12-x86_64 mysql

ls -l mysql

2.4 修改环境变量

vim /etc/profile

在最后一行加入以下配置:

export PATH=/application/mysql/bin:$PATH

source /etc/profile

2.5 建立mysql用户和组(如果已有可忽略)

useradd -M -s /sbin/nologin mysql

2.6 创建相关目录并修改权限

mkdir -p /data/mysql

chown -R mysql.mysql /application/*

chown -R mysql.mysql /data/*

2.7 初始化数据库

进到MySQL的bin目录

cd /application/mysql/bin

方法一:

初始化数据,初始化管理员的临时密码

mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql

方法二:

初始化数据,初始化管理员的密码为空

mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql

执行了方法一再执行方法二时,报错,如下:

报错原因:

在 /data/mysql 存在文件

解决:

m -rf /data/mysql/*

再次执行 mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql

MySQL5.7新特性重要说明:

MySQL5.7开始,MySQL加入了全新的密码安全机制:

(1)初始化完成后,会生成临时密码(显示到屏幕上,并且会往日志中记一份)

(2)密码复杂度:长度,超过12位;复杂度,数字、字符、大小写字母四种混乱组合

(3)密码过期时间180天

注意:MySQL5.6和MySQL5.7初始化是有区别的,MySQL5.6初始化目录如下:

/application/mysql/scripts/mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/data/mysql

2.8 书写MySQL默认配置文件

cat > /etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql
server_id=1
port=3306
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
prompt=3306 [\d]>
EOF

2.9 配置启动脚本

cd /application/mysql/support-files/

./mysql.server start

cp mysql.server /etc/init.d/mysqld

2.10 使用systemd管理mysql

vim /etc/systemd/system/mysqld.service

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

启动MySQL

systemctl start/stop/restart/status mysqld

2.11 在mysql系统外,使用mysqladmin设置密码

mysqladmin -u root -p password "123456"

3. 多实例的应用

3.1 准备多个目录

mkdir -p /data/330{7,8,9}/data

3.2 准备配置文件

cat > /data/3307/my.cnf <<EOF
[mysqld]
basedir=/application/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
log_error=/data/3307/mysql.log
port=3307
server_id=2
log_bin=/data/3307/mysql-bin
EOF

cat > /data/3308/my.cnf <<EOF
[mysqld]
basedir=/application/mysql
datadir=/data/3308/data
socket=/data/3308/mysql.sock
log_error=/data/3308/mysql.log
port=3308
server_id=3
log_bin=/data/3308/mysql-bin
EOF

cat > /data/3309/my.cnf <<EOF
[mysqld]
basedir=/application/mysql
datadir=/data/3309/data
socket=/data/3309/mysql.sock
log_error=/data/3309/mysql.log
port=3309
server_id=4
log_bin=/data/3309/mysql-bin
EOF

3.3 初始化三套数据

mv /etc/my.cnf /etc/my.cnf.bak

mysqld --initialize-insecure --user=mysql --datadir=/data/3307/data --basedir=/application/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3308/data --basedir=/application/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3309/data --basedir=/application/mysql

3.4 systemd管理多实例

cd /etc/systemd/system

cp mysqld.service mysqld3307.service

cp mysqld.service mysqld3309.service

cp mysqld.service mysqld3308.service

 

vim mysqld3307.service

ExecStart=/application/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf

vim mysqld3308.service

ExecStart=/application/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf

vim mysqld3309.service

ExecStart=/application/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf

3.5 授权

chown -R mysql.mysql /data/*

3.6 启动

systemctl start mysqld3307.service
systemctl start mysqld3308.service
systemctl start mysqld3309.service

3.7 验证多实例

netstat -lnp |grep 330

遇到如下报错:

解决方法:

yum install -y net-tools

mysql -S /data/3307/mysql.sock -e "select @@server_id"

mysql -S /data/3308/mysql.sock -e "select @@server_id"

mysql -S /data/3309/mysql.sock -e "select @@server_id"

 

本文参考自:

(1)https://www.jianshu.com/p/dd7137c4efa5

(2)https://www.jianshu.com/p/e872bc12f583

原文地址:https://www.cnblogs.com/opsprobe/p/12100603.html