安装环境:

  数据库版本:

    5.7.20

  操作系统版本: 

    CentOS 7.9

安装步骤:

1. 下载并上传MySQL软件到/server/tools

[root@DB_MySQL ~]# mkdir -p /server/tools
[root@DB_MySQL ~]# cd /server/tools/

2. 解压MySQL软件,并将其移动到/application/mysql目录下

[root@DB_MySQL tools]# ls
mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
[root@DB_MySQL tools]# tar -xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
[root@DB_MySQL tools]# mkdir -p /application/mysql
[root@DB_MySQL tools]# mv mysql-5.7.20-linux-glibc2.12-x86_64/* /application/mysql/

3. 用户的创建,处理的原始环境

[root@DB_MySQL mysql]# rpm -qa | grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
[root@DB_MySQL mysql]# yum remove mariadb-libs-5.5.68-1.el7.x86_64 -y
[root@DB_MySQL mysql]# rpm -qa | grep mariadb
[root@DB_MySQL mysql]# useradd -s /sbin/nologin mysql
[root@DB_MySQL mysql]# id mysql
uid=1000(mysql) gid=1000(mysql) 组=1000(mysql)

4. 设置环境变量

[root@DB_MySQL mysql]# vim /etc/profile
...行末
export PATH=/application/mysql/bin:$PATH
# 初始化配置文件
[root@DB_MySQL mysql]# source /etc/profile
# 使用mysql -V命令测试环境变量是否设置成功,成功执行结果如下
[root@DB_MySQL mysql]# mysql -V
mysql  Ver 14.14 Distrib 5.7.20, for linux-glibc2.12 (x86_64) using  EditLine wrapper

5. 创建数据路径并挂载

5.1  添加一块新磁盘模拟数据盘

 PS:

  生产环境中,根据运维经验应该先进行磁盘的配置,在进行MySQL的软件按照工作。

5.2  格式化并挂载磁盘
[root@DB_MySQL ~]# fdisk -l
# 格式化磁盘
[root@DB_MySQL ~]# mkfs.xfs /dev/sdb
[root@DB_MySQL ~]# mkdir /data
# 查看磁盘的UUID序列号,这里建议UUID挂载方式
[root@DB_MySQL ~]# blkid
/dev/sdb: UUID="b7d12ef9-69a1-4e9f-a677-d8650f61cbf8" TYPE="xfs"
# 将该UUID写入/etc/fstab文件中,永久挂载
[root@DB_MySQL ~]# vim /etc/fstab
...行末
UUID="b7d12ef9-69a1-4e9f-a677-d8650f61cbf8"     /data   xfs     defaults
0 0
# 挂载并查看是否成功
[root@DB_MySQL ~]# mount -a
[root@DB_MySQL ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 979M     0  979M    0% /dev
tmpfs                    991M     0  991M    0% /dev/shm
tmpfs                    991M  9.5M  981M    1% /run
tmpfs                    991M     0  991M    0% /sys/fs/cgroup
/dev/mapper/centos-root   50G  4.7G   46G   10% /
/dev/mapper/centos-home   67G   33M   67G    1% /home
/dev/sda1               1014M  138M  877M   14% /boot
tmpfs                    199M     0  199M    0% /run/user/0
/dev/sdb                  20G   33M   20G    1% /data   <--- 挂载到/data/目录下成功

6. 授权

[root@DB_MySQL tools]# mkdir /data/mysql/data -p
[root@DB_MySQL tools]# chown -R mysql.mysql /application/*
[root@DB_MySQL tools]# chown -R mysql.mysql /data/

7. 初始化数据

7.1 MySQL 5.6版本
/application/mysql/scripts/mysql_install_db
7.2 MySQL 5.7版本
7.2.1 生成随机密码初始化方式(不推荐使用)
[root@DB_MySQL mysql]# mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
...
2023-01-14T17:11:54.220022Z 1 [Note] A temporary password is generated for root@localhost: oL3w%jdyJm>C

说明:
--initialize 参数:

  • 对于密码复杂度进行定制:12位,4种
  • 密码过期时间: 180
  • 给root@localhost用户设置临时密码
7.2.2 无限制,无临时密码 --initialize-insecure
[root@DB_MySQL mysql]# mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data

8. 启动数据库

8.1 配置文件的准备

[root@DB_MySQL mysql]# cat > /etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF
8.2 启动方式
8.2.1 sys-v
[root@DB_MySQL mysql]# cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@DB_MySQL init.d]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/data/mysql/data/DB_MySQL.localdomain.err'.
 SUCCESS!
[root@DB_MySQL init.d]# netstat -anptu | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      1687/mysqld
8.2.2 systemd

注意:

   sysv方式启动过的话,需要提前关闭,才能以下方式登录

cat > /etc/systemd/system/mysqld.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]
WantenBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF

  执行完后,可以使用systemctl相关命令启动MySQL应用

# 打印日志到屏幕启动
/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf

小结:  

  # 如何分析处理MySQL数据库无法启动
    without updating PID 类似错误
    查看/data/mysql/data 主机名.err
    [ERROR] 上下文
  可能情况:
    /etc/my.cnf 路径不对等
    /tmp/mysql.sock文件修改过或删除过
    数据目录权限不是mysql
    参数改错了