第一部分:环境说明
(1)系统环境
[root@master 3308]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
(2)mysql版本
mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
下载路径:链接:https://pan.baidu.com/s/1nDKvZNivxqwDwrVH9Wt_xQ
提取码:pk0v
第二部分:mysql结构和安装规划
(1)mysql结构
mysql结构=软件部分(/app/mysql)+数据部分(/data/3306)
(2)总体说明
①创建一个/server/tools目录,用于存放mysql二进制安装包
②创建/app(存放软件部分)和/data(存放数据部分)两个目录,然后再在/data目录下创建一个3306子目录
③创建一个mysql用户(自动创建mysql组),管理/app和/data两个目录
④由于是二进制安装,所以软件部分的生成无须编译,解压目录、重命名,然后将其移动到/app目录下即可
⑤初始化过程用于生成数据文件(C6和C7有一些区别)
⑥制作my.cnf文件,其默认位置是/etc/my.cnf
⑦制作启动脚本(C6和C7有一些区别,C6习惯采用sys-v方式-->类似于/etc/init.d/mysqld start等,C7习惯采用systemd方式-->类似于systemctl start mysqld等)
⑧启动mysql,然后验证
第三部分:安装过程
(1)创建一个/server/tools目录,用于存放mysql二进制安装包
①创建目录
[root@master 3308]# mkdir /server/tools -p
②rz -y上传文件
[root@master tools]# ll
total 629764
-rw-r--r-- 1 root root 644869837 Oct 10 2020 mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
③解压(时间比较久)
[root@master tools]# tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
④重命名
[root@master tools]# mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql
[root@master tools]# ll
total 629764
drwxr-xr-x 9 root root 129 Jun 18 16:11 mysql
-rw-r--r-- 1 root root 644869837 Oct 10 2020 mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
(2)创建/app(存放软件部分)和/data(存放数据部分)两个目录,然后再在/data目录下创建一个3306子目录
[root@master tools]# mkdir /app/ -p
[root@master tools]# mkdir /data/3306/{data,binlog} -p
(3)创建一个mysql用户(自动创建mysql组),管理/app和/data两个目录
创建用户
[root@master tools]# useradd mysql -s /sbin/nologin -M
[root@master tools]# id mysql
uid=1001(mysql) gid=1001(mysql) groups=1001(mysql)
(4)移动/server/tools/mysql目录到/app/下(充实软件部分)
[root@master tools]# mv /server/tools/mysql /app/
[root@master tools]# ll /app/
total 0
drwxr-xr-x 9 zh zh 129 Jun 18 11:41 mysql
授权
[root@master tools]# chown -R mysql.mysql /app
[root@master tools]# chown -R mysql.mysql /data
(5)初始化过程用于生成数据文件
[root@master tools]# /app/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/app/mysql --datadir=/data/3306/data
说明:
①--initialize-insecure:用于生成空密码,mysql自5.7开始,会自动生成一个临时密码(复杂度、过期时间)
②--user=mysql:表示数据库傀儡用户
③--basedir:软件目录
④--datadir:数据目录
(6)制作my.cnf文件,其默认位置是/etc/my.cnf
说明:由于这里不是多实例,因此将配置文件放到默认位置即可(/etc/my.cnf)
cat >/etc/my.cnf<<EOF
[mysqld]
user=mysql
basedir=/app/mysql
datadir=/data/3306/data
server_id=6
port=3306
socket=/data/3306/mysql.sock
log_bin=/data/3306/binlog/mysql-bin
[mysql]
socket=/data/3306/mysql.sock
EOF
(7)制作启动脚本
cat >/etc/systemd/system/mysqld3306.service<<EOF
[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=/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF
说明:启动脚本通常需要关联my.cnf配置文件。
(8)启动mysql,然后验证
启动:systemctl start mysqld3306
[root@master tools]# /app/mysql/bin/mysql -uroot -S /data/3306/mysql.sock -e "select @@server_id"
说明:初始登录,无密码
有密码登录方式(随后需要输入密码):
[root@master tools]# /app/mysql/bin/mysql -uroot -p -S /data/3306/mysql.sock
第四部分:优化
(1)将/app/mysql/bin/加入系统环境变量,永久生效
①导入系统环境变量
[root@master tools]# echo 'export PATH=/app/mysql/bin/:$PATH' >> /etc/profile
[root@master tools]# tail -1 /etc/profile
export PATH=/app/mysql/bin/:$PATH
其他方法:ln -s /app/mysql/bin/* /usr/local/sbin/,用软链接将命令所在路径放在全局路径/usr/local/sbin/下面。
②重新加载环境变量
[root@master tools]# source /etc/profile
(2)mysql登录验证,不写用户,默认root登录;不考虑多实例情况,可以省略socket文件书写,简化书写如下
[root@master tools]# /app/mysql/bin/mysql -e "select @@server_id"
或者[root@master tools]# mysql -e "select @@server_id"
(3)多实例只需要设置
①数据目录:datadir=/data/3306/data
②my.cnf:配置文件路径/data/3306/my.cnf,修改server_id、port等参数
③启动脚本:/etc/systemd/system/mysqld3306.service作如下修改
ExecStart=/app/mysql/bin/mysqld --defaults-file=/data/3306/my.cnf