李翔-大数据技术

Big data technology!

第6章 MySQL 5.7 部署

Mysql的安装和应用


一、为什么大数据技术要安装 MySQL?

  1. 用于存储元数据(Hive、HUE等组件的依赖)

  • 大数据平台中的很多组件(如 Hive、HUE、Sqoop)都需要使用数据库来存储“元数据”。

  • 元数据包括:表结构、分区信息、权限配置、调度任务信息、日志记录等。

  • 默认的 Derby 数据库只能单用户访问,不适用于并发的生产场景。

  • 所以推荐使用 MySQL 这类高性能数据库,MySQL 更为主流和易用。

举例

  • Hive 使用 MySQL 存储其 Metastore;

  • HUE 使用 MySQL 存储用户登录、作业历史;


  1. 作为数据交换桥梁,连接大数据与传统数据库

  • MySQL 是广泛使用的传统关系型数据库,许多企业业务系统的数据都存储在 MySQL 中。

  • 大数据平台可通过 Sqoop、Spark、Flink 等工具与 MySQL 实现数据双向流转:

    • 从 MySQL 导入数据到 HDFS/Hive 进行分析;

    • 分析结果再导出回 MySQL,供报表系统或 Web 系统使用。

补充说明:MySQL 是“结构化数据”来源的重要入口,大数据平台擅长处理非结构化与半结构化数据,两者结合更具价值。


✅ 总结:

MySQL 在大数据平台中主要用于存储元数据、实现数据交互和支撑平台运行,是不可或缺的基础组件之一。


二、Mysql的安装

1.前期准备

1.1 环境要求

  1. 已搭建好的Hadoop完全分布式系统(三台虚机masterslave1slave2

  2. 关闭防火墙


1.2 卸载原有的 MySQL / MariaDB

1.2.1 检查是否已安装 MySQL

rpm -qa | grep mysql


1.2.2 卸载已安装的 MySQL(如有)

如果系统中没有安装MySQL,可以跳过此步骤。

使用以下命令卸载 MySQL 相关包(请将“包名”替换成上一步查到的实际名称):

rpm -e --nodeps mysql-xxx
  • -e:表示卸载(erase);

  • --nodeps:忽略依赖强制卸载(注意:生产环境不建议频繁使用此选项)。


1.2.3 检查并卸载 MariaDB(常见系统自带)

MariaDB 是 MySQL 的一个分支,部分 Linux 系统默认安装 MariaDB。

# 检测是否已安装MariaDB
rpm -qa | grep mariadb

检测结果示例

如果看到如 mariadb-libs-5.5.68-1.el7.x86_64,使用以下命令卸载:

rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

如果系统中没有安装MariaDB,可以跳过此步骤。


1.2.4 清理 MySQL/MariaDB 的残留目录

即使卸载了软件包,系统中可能还保留有旧配置、数据文件、模块等,建议清除:

# 1.从根目录开始查找mysql文件
find / -name mysql

# 2.如果查询结果如下:
# /etc/selinux/targeted/active/modules/100/mysql   # 与SELinux安全策略相关的MySQL模块。
# /usr/lib64/mysql    # MySQL的动态链接库文件存放处,影响MySQL的运行。

# 3.通过命令rm -rf将mysql有关目录都删除掉,例如我这里只有上述的两个目录,所以删除
# rm -rf:强制删除指定目录及其内容。
rm -rf /etc/selinux/targeted/active/modules/100/mysql
rm -rf /usr/lib64/mysql


2.安装并配置mysql

2.1 下载mysql

下载mysql-5.7.27-el7-x86_64.tar.gz,上传到master主机上的/opt/software/的文件夹中


2.2 安装mysql

2.2.1 解压

cd /opt/software
tar -zxvf mysql-5.7.27-el7-x86_64.tar.gz -C /opt/apps

2.2.2 重命名

cd /opt/apps
mv mysql-5.7.27-el7-x86_64 mysql-5.7.27


2.2.3 检查 MySQL 用户组与系统用户是否存在(如无则创建)

1. 检查MySQL组是否存在

grep mysql /etc/group


2. 检查MySQL用户是否存在

grep mysql /etc/passwd


3. 创建MySQL组和用户

如果MySQL组和用户不存在,可以使用以下命令创建:

# 创建名为mysql的用户组
groupadd mysql
# 创建一个名为 mysql 的系统用户,并将其加入mysql用户组。
useradd -r -g mysql mysql

# 检查MySQL组是否存在
grep mysql /etc/group
# 检查MySQL用户是否存在
grep mysql /etc/passwd


2.3 配置mysql数据库

2.3.1 创建数据目录data

MySQL 启动后需要一个专门的地方来存放数据库文件、表结构、日志等关键数据

cd /opt/apps/mysql-5.7.27
mkdir data


2.3.2  修改所有者及所属组

修改目录归属权,是为了让 mysql 用户能正常访问和管理 MySQL 的所有文件,确保服务能顺利运行。

# 将/opt/apps/mysql-5.7.27目录及其所有内容的所有者及所属组改为mysql 用户和 mysql 组。
chown -R mysql.mysql /opt/apps/mysql-5.7.27


2.3.3 编辑 /etc/my.cnf 配置文件

my.cnf 是 MySQL 的主配置文件,启动时会读取其中内容,决定服务运行方式和参数。

如果是手动安装MySQL(如使用二进制包),则 不会自动生成 my.cnf。需要自己创建此文件。

touch /etc/my.cnf

# 创建空文件,再在FinalShell双击其打开编辑

配置如下:

[client]
# 指定MySQL服务器的端口号,客户端通过该端口进行网络连接
port = 3306
# 指定客户端使用的socket文件路径,用于与本地MySQL服务器通信
socket = /opt/apps/mysql-5.7.27/data/mysql.sock

[mysqld]
# 设置MySQL的安装目录
basedir = /opt/apps/mysql-5.7.27
# 设置MySQL数据库的数据存放目录
datadir = /opt/apps/mysql-5.7.27/data
# 指定MySQL服务器监听的端口号
port = 3306
# 指定服务器使用的socket文件路径,客户端通过这个文件与服务器通信(不需要通过网络)
socket = /opt/apps/mysql-5.7.27/data/mysql.sock
# 设置MySQL服务器的字符集为UTF-8
character-set-server = utf8
# 指定错误日志的存放路径
log-error = /opt/apps/mysql-5.7.27/data/mysqld.log
# 指定MySQL服务器进程PID文件的存放路径
pid-file = /opt/apps/mysql-5.7.27/data/mysqld.pid


2.3.4 初始化Mysql

初始化 MySQL 的数据目录,创建系统所需的核心表和 root 管理用户(密码为空,仅适用于测试环境)。

cd /opt/apps/mysql-5.7.27

./bin/mysqld --initialize-insecure \
--user=mysql \
--basedir=/opt/apps/mysql-5.7.27/ \
--datadir=/opt/apps/mysql-5.7.27/data/

#解释
--initialize-insecure: 初始化 MySQL 的数据目录并生成空密码 root 用户。
--user=mysql: 以 mysql 用户身份运行,符合权限隔离原则。
--basedir: 指定 MySQL 的安装目录。
--datadir: 指定数据库文件存储目录。


2.3.5 初始化完成之后,查看日志信息

cat /opt/apps/mysql-5.7.27/data/mysqld.log

image-20250801175806372

MySQL 提醒你:“我给你创建了个管理员账户 root,但没设密码,你最好自己尽快设一个!”


2.3.6 将启动脚本设置为开机自启

# 1.进入 MySQL 安装目录
cd /opt/apps/mysql-5.7.27
# 将 MySQL 提供的启动脚本复制到系统的启动脚本目录,并重命名为 `mysqld`
cp support-files/mysql.server /etc/init.d/mysqld

# 2. 赋予 mysqld 文件可执行权限
chmod +x /etc/init.d/mysqld

# 3. 将 MySQL 服务添加到系统服务中
# 下面的命令将 /etc/init.d/mysqld 脚本(用于管理 MySQL 服务)添加到系统的服务配置中。
# 这一步确保 MySQL 服务在系统启动时能够自动启动。
chkconfig --add mysqld

# 4. 查看系统中所有服务的列表,包括MySQL是否在系统启动时自动启动以及在不同运行级别下的状态。
chkconfig --list
# 查看结果如下:说明 MySQL 服务已经被设置为在运行级别 2、3、4、5 自动启动,这是符合服务器使用需求的设置。
# 如果是下面的状态,就跳过下面的步骤5,执行步骤6
mysqld          0:关    1:关    2:开    3:开    4:开    5:开    6:关
# 解释:
   --level 345:指定了运行级别 3、4 和 5【通常是MySQL的工作状态级别】
   运行级别 3:系统启动到无图形界面的多用户模式,常用于 MySQL数据库服务。
   运行级别 4:用户自定义,通常未被使用。
   运行级别 5:系统启动到图形用户界面模式,适用于桌面系统。
   mysqld on:表示在指定的运行级别下将 MySQL 服务设置为自动启动。

# 5. 重启当前主机
reboot

# 6. 系统重启后,检查 MySQL 服务是否自启成功
# 查看 MySQL 服务的状态,确认服务是否正在运行。【状态为active ( running)则成功】
systemctl status mysqld
# 检查本机的 MySQL 进程,确保 MySQL 正在监听指定的端口(通常是 3306)
ss -plnt | grep 3306


2.3.7 配置环境变量

vi /etc/profile

# 添加以下内容
# Mysql 安装路径
export MYSQL_HOME=/opt/apps/mysql-5.7.27
export PATH=$PATH:$MYSQL_HOME/bin

使环境变量配置生效

source /etc/profile
# 查看PATH路径
echo $PATH


2.3.8 更改mysql密码和权限

# 查看mysql服务的状态
systemctl status mysqld

image-20230317134347527

进入mysql并更改root帐户密码 【注意:初次登录是空密码!!!】

`1.在master节点登录mysql
mysql -uroot -p  
# 初次登录直接回车(空密码),如果已设置过密码则输入密码

`2.设置 root@localhost 的新密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

`3. 创建'root'@'%' 用户,该用户可以从任意主机(%表示所有主机)进行连接
CREATE USER 'root'@'%' IDENTIFIED BY '123456';

`4. 允许 root 用户从任何 IP 地址('%')登录,并赋予其对所有数据库和所有表的所有权限。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

`5. 刷新权限,立即生效
FLUSH PRIVILEGES;

`6. 检查用户列表(可选)
SELECT User, Host FROM mysql.user;
# 结果
+---------------+-----------+
| User          | Host      |
+---------------+-----------+
| root          | %         |
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
# 确保root用户的Host字段包含了 '%',表明从任何 IP 地址都可以登录

`7. 退出
QUIT;


2.3.9 验证mysql是否安装成功

# 命令行使用root用户、密码123456登录mysql
mysql -uroot -p123456

至此,mysql安装配置完毕。


2.4  记忆:启动和关闭mysql服务器命令:

systemctl start mysqld         # 启动服务
systemctl status mysqld        # 查看服务状态
systemctl stop mysqld          # 停止服务
systemctl restart mysqld       # 重启服务


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.3

版权:李翔
备案/许可证编号为:新ICP备2024006115号-1