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"
本文参考自: