【一起学Linux】第十六天:MySQL 数据库基础(安装 + 增删改查)、Logstash 收集日志(入门)、Shell 脚本接收参数

一、MySQL 数据库基础:安装并操作 “结构化数据”(工作必用)

实际工作中,很多数据需要 “结构化存储”(比如用户信息、订单记录),不能只存在文本文件里(不好查询、容易乱)。MySQL 是最常用的关系型数据库(就像 “电子表格的集合”,但能高效查询、关联数据),今天学 “安装 MySQL + 基本的增删改查”(新增、删除、修改、查询数据)。

1. 什么是 MySQL?(用例子秒懂)
  • 你有 100 个用户的信息(姓名、年龄、电话),存在文本文件里查 “年龄> 30 的用户” 要逐行找;
  • 存在 MySQL 里,一条命令就能查出结果(select * from users where age>30;),高效且不易出错。
2. 实操:安装 MySQL 并完成基础操作

步骤 1:安装 MySQL 服务器(需要管理员权限)

bash

sudo apt update  
sudo apt install mysql-server  # 安装MySQL服务,输入密码后按y  

安装完成后,MySQL 会自动启动,验证是否运行:

bash

sudo systemctl status mysql  # 显示“active (running)”说明启动成功  

步骤 2:首次登录 MySQL(设置安全选项)
MySQL 默认 root 用户(管理员)没有密码,需要先初始化安全设置:

bash

sudo mysql_secure_installation  # 启动安全配置向导  

按以下步骤操作(全程选最安全的选项,小白不用纠结):

  1. 提示 “是否设置密码验证强度?”→ 输入0(最低强度,允许简单密码,方便测试);
  2. 提示 “设置 root 用户密码”→ 输入一个简单密码(比如123456,实际工作用复杂密码),回车后重复输入;
  3. 提示 “是否删除匿名用户?”→ 输入y(删除,避免陌生人登录);
  4. 提示 “是否禁止 root 远程登录?”→ 输入y(默认只允许本机登录,安全);
  5. 提示 “是否删除 test 数据库?”→ 输入y(没用,删除);
  6. 提示 “是否刷新权限?”→ 输入y(让设置生效)。

步骤 3:登录 MySQL(进入数据库操作界面)

bash

sudo mysql -u root -p  # -u root:用root用户登录;-p:提示输入密码  

输入刚才设置的密码(123456),回车后进入 MySQL 命令行(提示符变成mysql>),表示登录成功。

3. MySQL 基本操作:增删改查(用 “用户表” 举例)

场景:创建一个 “用户信息表”(user_info),存储id(编号)、name(姓名)、age(年龄),并练习 “新增用户、查询用户、修改年龄、删除用户”。

(1)创建数据库(相当于 “新建一个文件夹”)

sql

-- MySQL命令以分号结尾,区分大小写(但习惯小写)  
create database mytest;  -- 创建一个叫mytest的数据库  
use mytest;  -- 进入这个数据库(后续操作都在这个库下)  

  • 输出Database changed表示成功进入mytest数据库。
(2)创建表(相当于 “在文件夹里新建一个电子表格”)

sql

-- 创建user_info表,定义3个字段:id(自增编号)、name(姓名)、age(年龄)  
create table user_info (  
    id int auto_increment primary key,  -- id:整数,自动增长,作为主键(唯一标识)  
    name varchar(50) not null,  -- name:字符串(最长50字符),不能为空  
    age int  -- age:整数,可空(允许不填)  
);  

  • 输出Query OK, 0 rows affected (0.01 sec)表示表创建成功。
(3)新增数据(往表中 “填内容”)

sql

-- 插入3条用户数据  
insert into user_info (name, age) values ('张三', 25);  
insert into user_info (name, age) values ('李四', 30);  
insert into user_info (name, age) values ('王五', 35);  

  • 每条命令输出Query OK, 1 row affected (0.00 sec)表示插入成功。
(4)查询数据(“查找表中的内容”,最常用)

sql

-- 1. 查询所有用户(*表示“所有字段”)  
select * from user_info;  

-- 输出会像表格一样显示:  
+----+--------+------+  
| id | name   | age  |  
+----+--------+------+  
|  1 | 张三   |   25 |  
|  2 | 李四   |   30 |  
|  3 | 王五   |   35 |  
+----+--------+------+  

-- 2. 条件查询:只查年龄>30的用户  
select * from user_info where age > 30;  

-- 输出:  
+----+--------+------+  
| id | name   | age  |  
+----+--------+------+  
|  3 | 王五   |   35 |  
+----+--------+------+  
(5)修改数据(“更新表中的内容”)

sql

-- 把李四的年龄改成32  
update user_info set age=32 where name='李四';  

-- 验证:再次查询  
select * from user_info where name='李四';  -- 会显示age=32  
(6)删除数据(“删除表中的内容”,谨慎使用!)

sql

-- 删除id=1的用户(张三)  
delete from user_info where id=1;  

-- 验证:查询所有用户,张三已消失  
select * from user_info;  
(7)退出 MySQL

sql

exit;  -- 回到Linux终端  

二、Logstash 入门:批量收集分散的日志(日志分析第一步)

实际工作中,日志可能分散在多个地方(比如/var/log/nginx//var/log/auth.log、应用自己的日志目录),手动查看太麻烦。Logstash 是 “日志收集工具”,能把分散的日志 “集中搬到一个地方”(比如存到文件或数据库),像 “快递员把不同地址的包裹集中送到仓库”。

1. Logstash 的核心功能(简单理解)
  • 输入(Input):从哪里取日志(比如文件、网络);
  • 过滤(Filter,可选):对日志做简单处理(比如提取关键信息);
  • 输出(Output):把处理后的日志送到哪里(比如本地文件、 Elasticsearch)。
2. 实操:用 Logstash 收集auth.log到一个文件

步骤 1:安装 Java(Logstash 依赖 Java,先安装)

bash

sudo apt install openjdk-11-jdk  # 输入密码后按y,等待安装完成  

步骤 2:安装 Logstash

bash

# 添加Elastic官方源(Logstash属于Elastic公司)  
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg  
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic.list > /dev/null  

# 更新源并安装Logstash  
sudo apt update  
sudo apt install logstash  # 输入密码后按y,安装时间可能较长  

步骤 3:创建 Logstash 配置文件(定义 “输入、输出”)

bash

sudo nano /etc/logstash/conf.d/collect_auth_log.conf  # 配置文件名随便起,.conf结尾  

步骤 4:写入简单配置(只做 “输入→输出”,不过滤)

conf

input {  # 输入:从auth.log文件取日志  
  file {  
    path => "/var/log/auth.log"  # 日志文件路径  
    start_position => "beginning"  # 从文件开头开始读  
  }  
}  

output {  # 输出:把日志写到一个新文件  
  file {  
    path => "/home/你的用户名/linux_study/logstash_output/auth.log.collect"  # 输出文件路径(自己定义)  
    codec => line { format => "%{message}" }  # 按行输出,保持原日志格式  
  }  
}  

  • 替换/home/你的用户名/为你的实际路径(比如/home/zhangsan/);
  • 创建输出目录(否则 Logstash 会报错):

    bash

    mkdir -p ~/linux_study/logstash_output  # -p表示递归创建目录  
    

步骤 5:启动 Logstash 并测试

bash

# 用管理员权限启动,指定配置文件  
sudo /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/collect_auth_log.conf  

步骤 6:验证日志是否被收集
打开新终端,往auth.log里写一条测试日志(触发 Logstash 收集):

bash

sudo echo "这是一条测试日志,会被Logstash收集" >> /var/log/auth.log  

查看 Logstash 的输出文件,能看到这条测试日志:

bash

cat ~/linux_study/logstash_output/auth.log.collect  

步骤 7:停止 Logstash
在 Logstash 运行的终端,按Ctrl+C停止。

三、Shell 脚本接收参数:让脚本 “处理不同文件不用改代码”

之前写的脚本(比如system_check.sh)只能处理固定内容,今天学 “让脚本接收参数”—— 比如运行./process_file.sh file1.txt处理file1.txt,运行./process_file.sh file2.txt处理file2.txt,不用每次改脚本里的文件名,像 “函数能接收不同的输入”。

1. 脚本参数的表示方法(记 3 个就够了)
  • $0:脚本本身的名字(比如process_file.sh);
  • $1:第一个参数(比如运行./process_file.sh a.txt$1就是a.txt);
  • $2:第二个参数(以此类推,$n表示第 n 个参数);
  • $#:参数的总个数(判断用户是否输入了足够的参数)。
2. 实操:写一个 “接收文件名参数” 的脚本(统计文件行数)

步骤 1:创建脚本count_lines.sh

bash

nano ~/linux_study/count_lines.sh  

步骤 2:写入以下内容(带参数判断和处理)

bash

#!/bin/bash  
# 功能:统计指定文件的行数(接收一个文件名参数)  

# 判断用户是否输入了参数($#是参数个数,-eq 0表示“等于0”)  
if [ $# -eq 0 ]; then  
    echo "错误:请输入要统计的文件名!用法:$0 文件名"  
    exit 1  # 退出脚本,返回错误状态(1表示出错)  
fi  

# 提取第一个参数(要统计的文件)  
filename=$1  

# 判断文件是否存在  
if [ ! -f "$filename" ]; then  
    echo "错误:文件$filename不存在!"  
    exit 1  
fi  

# 统计行数并输出结果(wc -l统计行数)  
line_count=$(wc -l < "$filename")  # < 表示“从文件读内容,不显示文件名”  
echo "文件$filename的行数是:$line_count"  

步骤 3:加执行权限并测试

bash

chmod +x count_lines.sh  

# 测试1:输入正确的文件名(比如long_text.txt)  
./count_lines.sh long_text.txt  
# 输出:文件long_text.txt的行数是:XX(具体行数根据你的文件)  

# 测试2:不输入参数(应该报错)  
./count_lines.sh  
# 输出:错误:请输入要统计的文件名!用法:count_lines.sh 文件名  

# 测试3:输入不存在的文件名(比如nonexist.txt)  
./count_lines.sh nonexist.txt  
# 输出:错误:文件nonexist.txt不存在!  

今日必练实操清单(25 分钟搞定)

  1. MySQL 操作

    • 重新登录 MySQL(sudo mysql -u root -p),进入mytest数据库(use mytest;);
    • 新增 2 条用户数据(insert into user_info (name, age) values ('赵六', 28), ('孙七', 40););
    • 查询年龄 > 30 的用户(select * from user_info where age>30;),应该能看到王五和孙七;
    • 退出 MySQL(exit)。
  2. Logstash 收集日志

    • 按步骤配置 Logstash,收集/var/log/syslog~/linux_study/logstash_output/syslog.collect
    • /var/log/syslog写一条测试日志(sudo echo "Logstash测试" >> /var/log/syslog),查看输出文件是否有这条日志。
  3. 带参数的脚本

    • count_lines.sh统计day1_note.txtday2_note.txt的行数,对比结果是否正确。

今日总结(3 句话记住核心)

  1. MySQL 基础create database建库→create table建表→insert/select/update/delete增删改查,登录命令是mysql -u 用户名 -p,数据结构化存储必用。
  2. Logstash 入门:写配置文件定义 “input(从哪取)、output(往哪送)”,启动命令logstash -f 配置文件,日志收集第一步。
  3. 脚本参数$1接收第一个参数,$#判断参数个数,让脚本 “一个代码处理多个文件”,不用重复改代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值