Mysql的安装和应用
一、为什么大数据技术要安装 MySQL?
用于存储元数据(Hive、HUE等组件的依赖)
大数据平台中的很多组件(如 Hive、HUE、Sqoop)都需要使用数据库来存储“元数据”。
元数据包括:表结构、分区信息、权限配置、调度任务信息、日志记录等。
默认的 Derby 数据库只能单用户访问,不适用于并发的生产场景。
所以推荐使用 MySQL 这类高性能数据库,MySQL 更为主流和易用。
举例:
Hive 使用 MySQL 存储其 Metastore;
HUE 使用 MySQL 存储用户登录、作业历史;
作为数据交换桥梁,连接大数据与传统数据库
MySQL 是广泛使用的传统关系型数据库,许多企业业务系统的数据都存储在 MySQL 中。
大数据平台可通过 Sqoop、Spark、Flink 等工具与 MySQL 实现数据双向流转:
从 MySQL 导入数据到 HDFS/Hive 进行分析;
分析结果再导出回 MySQL,供报表系统或 Web 系统使用。
✅ 补充说明:MySQL 是“结构化数据”来源的重要入口,大数据平台擅长处理非结构化与半结构化数据,两者结合更具价值。
✅ 总结:
MySQL 在大数据平台中主要用于存储元数据、实现数据交互和支撑平台运行,是不可或缺的基础组件之一。
二、Mysql的安装
1.前期准备
1.1 环境要求
已搭建好的Hadoop完全分布式系统(三台虚机
master;slave1;slave2)关闭防火墙
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/mysql2.安装并配置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/apps2.2.2 重命名
cd /opt/apps
mv mysql-5.7.27-el7-x86_64 mysql-5.7.272.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/passwd2.3 配置mysql数据库
2.3.1 创建数据目录data
MySQL 启动后需要一个专门的地方来存放数据库文件、表结构、日志等关键数据。
cd /opt/apps/mysql-5.7.27
mkdir data2.3.2 修改所有者及所属组
修改目录归属权,是为了让 mysql 用户能正常访问和管理 MySQL 的所有文件,确保服务能顺利运行。
# 将/opt/apps/mysql-5.7.27目录及其所有内容的所有者及所属组改为mysql 用户和 mysql 组。
chown -R mysql.mysql /opt/apps/mysql-5.7.272.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.pid2.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

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 33062.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 $PATH2.3.8 更改mysql密码和权限
# 查看mysql服务的状态
systemctl status mysqld
进入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 # 重启服务