Linux 光速入门

date
Jul 3, 2024
URL
slug
linux-quick-start
status
Published
tags
DevOps
summary
这是一份光速入门Linux的教程,用通俗易懂的表达讲解了Linux的基本概念,包括Linux是什么、常用的Linux发行版、文件系统结构、用户管理、软件包管理、网络配置以及一些常用的Linux命令和备忘清单。
type
Post

什么是 Linux ?

  1. Linux 和 Windows 一样,都是操作系统。
  1. 但 Linux 是开源的,Windows 是闭源的。
  1. Linux 是多用户系统(可以同时多个用户登录),而 Windows 是单用户系统(同时只能有一个用户登录)。
  1. Linux 常用的方式是命令行操作(不需要鼠标,只需要把双手放在键盘上),而 Windows 的常用方式是图形化界面(就是我们熟悉的那个 WIndows ,你需要鼠标和键盘一起操作)。
  1. Linux 在服务器领域更加受欢迎,而 Windows 在个人用户领域更加受欢迎。
  1. 作为一个专业技术人员,掌握 Linux 的使用是一项非常重要的基础技能。而 Windows 应该不用我教你了。
  1. Linux 是一个统称,也可以理解为 Linux 是一个内核,我们使用的是基于 Linux 内核开发的发行版本,比如 RedHat、CentOS、Ubuntu、Kali Linux、麒麟、欧拉等等。
  1. 不要被那么多的发行版吓到了,其实他们的核心都是一样的,所以你不需要从一开始就把所有的发行版都学一遍,基本上只要掌握一个发行版(比如 CentOS ),其他发行版你也能够很容易就上手,因为他们的命令几乎都一样。
  1. 看看这些发行版的 Logo 认识一下,下次别说你没见过了👇
    1. Linux的各个发行版本Logo
      Linux的各个发行版本Logo
  1. 虽然这么多发行版本可能会让你眼花缭乱,但是他们还是有分类的,看看下面这张图了解一下即可👇
    1. notion image
 

你应该要知道的前置知识?

  1. 开始 Linux 的学习之前,我觉得你应该需要知道下面这些前置知识。
  1. 在 Linux 系统中,「一切皆文件」,说人话就是 Linux 中的所有东西你都可以把它当作文件来处理。
  1. 在 Linux 系统中,root 用户就是神 👑 ,它说了算,它想做什么都可以,谁都阻止不了它,它甚至可以把自己干掉 😇 。
  1. 在 Linux 系统中,没有了 Windows 中 C盘 D盘的概念,只有一个盘,那就是根 / (我们把这个斜杆叫做根目录,看看下面那张图是不是和树根有点像,所以把最顶层的 / 叫做根目录了),Linux 中的一切都是在 / 目录下。
  1. 使用 Linux 我们一般都会通过远程连接(SSH)的方式来访问,那为什么要远程连接呢?没错,就因为它距离你很远。上面我讲到了 Linux 在服务器领域使用更加广泛,而服务器基本上都会放在机房里(某省某市某区的某机房的某个机架上的某台机器…,🇭🇰 我就是想表达它距离我们很远),所以你不可能飘洋过海地去找到那台服务器,然后在上面敲一个命令的对吧?所以我们就需要远程连接了,你只需要知道服务器的 IP 地址和账户信息,你就可以在任何地方连接上服务器,然后进行操作。
  1. Linux 明明就有桌面,我们为什么不用呢?(可能是为了显得我很极客吧?开玩笑的 😝 ),可以用,但没必要,想象一下服务器上面部署的是服务,部署好之后你只需要让他静静地在那里提供服务就可以了,所以你在上面运行一个桌面是不是就浪费资源了?更重要的是服务器要求稳定性,桌面程序一般 Bug 🕷️ 都比较多会导致死机之类的(就跟 Windows 蓝屏 💣 一样道理),所以能不用就不用了。
  1. 时间紧迫,想到了再给补充吧。

Linux 文件结构

  1. 什么是文件结构,说人话就是 Linux 上有什么文件,这些文件是怎么组织的?你得知道 Linux 上面的这些文件是怎么组织的,你才能找到你要的文件。
  1. 就好比你在 Windows 上下载了一个软件安装包,下载完成之后,好像你就是知道去 C 盘下的 Downloads 文件夹找到你下载的那个安装包。问问自己你是怎么知道你下载的东西在 Downloads 文件夹下面的?哈哈,你就是知道。这就是文件结构和组织方式。
  1. Linux 在你安装好之后,就会有默认的文件结构,一般我们都会按照约定俗成的方式来使用,直接看图吧 👇
    1. notion image
  1. 每个目录是存放什么的你要大概了解一下,下次有需要你才知道去哪里找。下面记住几个最常用的,其他自己搜索学习
    1. /home:用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
    2. /root:该目录为系统管理员,也称作超级权限者的用户主目录。
    3. /etc:etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
    4. /tmp:tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
    5. /boot:这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
    6. /bin:bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令,如 cat、ls、cp等等。

破解 CentOS 7 系统 root 用户密码

  1. 启动到 GRUB 菜单:启动或重启系统,在系统启动时按箭头键进入 GRUB 菜单。
  1. 编辑 GRUB 菜单:在 GRUB 菜单上,选择启动内核条目(默认第一条)并按 e 键进入编辑模式。
  1. 修改启动参数:找到以 linux16 开头的行,在末尾添加 init=/bin/sh
  1. 启动单用户模式:按 Ctrl + XF10 启动系统到单用户模式。
  1. 重新挂载根文件系统:输入 mount -o remount,rw / 重新挂载根文件系统为读写。
  1. 更改密码:使用 passwd 命令更改 root 密码。
  1. 设置 SELinux 自动重新标记:输入 touch /.autorelabel 创建标志文件。
  1. 重新启动系统:输入 exec /sbin/init 重新启动系统。
  1. 等待重新标记完成:系统将重新启动并重新标记文件系统,等待完成即可。

Linux 备忘清单

Linux 命令备忘清单

notion image

Linux 文件权限备忘清单

notion image

Linux 中的特殊文件权限备忘清单

notion image

Linux Vim 编辑器备忘清单

Linux ip 命令备忘清单

notion image

Linux 重定向备忘清单

notion image

Linux cron 计划任务备忘清单

notion image

Linux yum 命令备忘清单

Linux grep 命令备忘清单

notion image

Linux awk 命令备忘清单

notion image

Linux netcat 命令备忘清单

notion image

Linux 逻辑卷管理备忘清单

notion image

Linux curl 命令备忘清单

notion image

最常用命令

ls

ls命令用于列出目录内容,是Linux中最常用的命令之一。它可以显示指定目录下的文件和子目录。
常用参数:
  • l:以长格式显示,包含文件的详细信息(如权限、所有者、大小和修改时间)。
  • a:显示所有文件,包括以.开头的隐藏文件。
  • h:人类可读格式,结合l,将文件大小以合适的单位(如KB、MB)显示。
操作示例:
  • ls → 输出将显示当前目录下的文件和子目录的名称。
  • ls -l → 输出将包括每个文件的权限、所有者、大小和最后修改时间。
  • ls -a → 输出将包括所有以.开头的隐藏文件。
  • ls -lah → 输出将是长格式的,包括所有文件(包括隐藏文件)的详细信息,并以合适的单位显示文件大小。

pwd

pwd命令用于显示当前工作目录的路径,是“print working directory”的缩写。
操作示例:
  • pwd → 输出将显示当前工作目录的绝对路径。

cd

cd命令用于更改当前工作目录,是“change directory”的缩写。
操作示例:
  • cd / → 当前工作目录将更改为根目录。
  • cd .. → 当前工作目录将更改为上一级目录。
  • cd ~ → 当前工作目录将更改为用户的主目录。

mkdir

mkdir命令用于创建新目录,是“make directory”的缩写。
操作示例:
  • mkdir new_directory → 这会在当前工作目录下创建名为new_directory的新目录。
  • mkdir -p parent_directory/child_directory → 这会创建parent_directory目录及其子目录child_directory。

rmdir

rmdir命令用于删除空目录,是“remove directory”的缩写。
操作示例:
  • rmdir new_directory → 这会删除当前工作目录下名为new_directory的空目录。

cp

cp命令用于复制文件或目录,是“copy”的缩写。
常用参数:
  • r:递归复制目录及其内容
  • v:显示详细的复制过程
操作示例:
  • cp file.txt /path/to/destination → 这会将file.txt复制到指定路径。
  • cp -r directory /path/to/destination → 这会将directory及其所有内容复制到指定路径。

mv

mv命令用于移动或重命名文件或目录,是“move”的缩写。
操作示例:
  • mv old_name.txt new_name.txt → 这会将old_name.txt重命名为new_name.txt。
  • mv file.txt /path/to/destination → 这会将file.txt移动到指定路径。

rm

rm命令用于删除文件或目录,是“remove”的缩写。
常用参数:
  • r:递归删除目录及其内容
  • f:强制删除
操作示例:
  • rm file.txt → 这会删除file.txt文件。
  • rm -rf directory → 这会递归强制删除directory及其所有内容。

chown

chown命令用于更改文件或目录的所有者,是“change owner”的缩写。
操作示例:
  • chown user:group file.txt → 这会将file.txt的所有者更改为user,组更改为group。

chmod

chmod命令用于更改文件或目录的权限,是“change mode”的缩写。
操作示例:
  • chmod 755 file.txt → 这会将file.txt的权限更改为755,即所有者有读、写、执行权限,组和其他用户有读、执行权限。

cat

cat命令用于连接文件并在标准输出上显示其内容,是“concatenate”的缩写。
操作示例:
  • cat file.txt → 这会在终端上显示file.txt的内容。

tac

tac命令用于反向显示文件内容,是“cat”的反向。
操作示例:
  • tac file.txt → 这会在终端上反向显示file.txt的内容。

nl

nl命令用于显示文件内容并在每行前加上行号。
操作示例:
  • nl file.txt → 这会在终端上显示file.txt的内容,并在每行前加上行号。

more

more命令用于逐屏显示文件内容。
操作示例:
  • more file.txt → 这会在终端上逐屏显示file.txt的内容,可以按空格键翻页。

less

less命令用于逐屏查看文件内容,类似于more,但功能更强大。
操作示例:
  • less file.txt → 这会在终端上逐屏显示file.txt的内容,可以使用上下键滚动查看,按q键退出。

head

head命令用于显示文件的开头部分。
常用参数:
  • n:指定显示的行数
操作示例:
  • head file.txt → 这会显示file.txt的前10行。
  • head -n 5 file.txt → 这会显示file.txt的前5行。

tail

tail命令用于显示文件的结尾部分。
常用参数:
  • n:指定显示的行数
  • f:实时追踪文件新增内容
操作示例:
  • tail file.txt → 这会显示file.txt的后10行。
  • tail -n 5 file.txt → 这会显示file.txt的后5行。
  • tail -f file.txt → 这会显示file.txt的后10行,并在文件新增内容时实时更新显示。

touch

touch命令用于创建空文件或更新文件的时间戳。
操作示例:
  • touch newfile.txt → 这会在当前工作目录下创建名为newfile.txt的空文件。
  • touch existingfile.txt → 这会更新existingfile.txt的访问和修改时间。

echo

echo命令用于在终端显示一段文字或将其写入文件。
操作示例:
  • echo "Hello, World!” → 这会在终端显示“Hello, World!”。
  • echo "Hello, World!" > file.txt → 这会将“Hello, World!”写入file.txt文件,若文件不存在则创建它。
  • echo "Hello again!" >> file.txt → 这会将“Hello again!”追加到file.txt文件的末尾。

ping

ping命令用于测试网络连接,检查主机是否可达。
操作示例:
  • ping kangvcar.com → 这会发送ICMP ECHO请求到google.com,并显示响应时间等信息。

ifconfig

ifconfig命令用于配置网络接口或显示其状态。
操作示例:
  • ifconfig → 这会显示系统中所有网络接口的状态和配置信息。

ip a

ip a命令用于显示所有网络接口的详细信息。
操作示例:
  • ip a → 这会显示系统中所有网络接口的详细信息,包括IP地址、状态等。

useradd

useradd命令用于创建新用户。
操作示例:
  • useradd user → 这会创建一个名为user的新用户。
  • useradd -m -d /home/user user → 这会创建一个名为user的新用户,并将其主目录设置为/home/user

userdel

userdel命令用于删除用户。
操作示例:
  • userdel user → 这会删除名为user的用户。
  • userdel -r user → 这会删除名为user的用户及其主目录。

usermod

usermod命令用于修改用户帐户信息。
操作示例:
  • usermod -aG group user → 这会将user添加到group组。
  • usermod -l newuser user → 这会将user的登录名更改为newuser

passwd

passwd命令用于更改用户密码。
操作示例:
  • passwd → 这会提示输入当前密码和新密码,用于更改当前用户的密码。
  • passwd user → 这会提示输入新密码,用于更改user用户的密码(需要超级用户权限)。

groupadd

groupadd命令用于创建新组。
操作示例:
  • groupadd group → 这会创建一个名为group的新组。

groupdel

groupdel命令用于删除组。
操作示例:
  • groupdel group → 这会删除名为group的组。

groupmod

groupmod命令用于修改组信息。
操作示例:
  • groupmod -n newgroup group → 这会将group的名称更改为newgroup

df

df命令用于显示文件系统的磁盘空间使用情况,是“disk filesystem”的缩写。
常用参数:
  • h:以人类可读格式显示
操作示例:
  • df → 这会显示各文件系统的磁盘空间使用情况。
  • df -h → 这会以合适的单位(如KB、MB)显示磁盘空间使用情况。

du

du命令用于估算文件和目录的磁盘使用情况,是“disk usage”的缩写。
常用参数:
  • h:以人类可读格式显示
  • s:显示总计
操作示例:
  • du → 这会显示每个子目录的磁盘使用情况。
  • du -h → 这会以合适的单位(如KB、MB)显示每个子目录的磁盘使用情况。
  • du -sh → 这会以合适的单位显示当前目录的总磁盘使用情况。

ps

ps命令用于显示当前进程的状态,是“process status”的缩写。
常用参数:
  • aux:显示所有用户的所有进程
  • -ef:显示详细格式的所有进程
操作示例:
  • ps aux → 这会显示所有用户的所有进程及其详细信息。
  • ps -ef → 这会显示所有进程的详细信息,包括PID、PPID、启动时间等。

kill

kill命令用于终止进程。
常用参数:
  • 9:强制终止
操作示例:
  • kill 1234 → 这会终止PID为1234的进程。
  • kill -9 1234 → 这会强制终止PID为1234的进程。

grep

grep命令用于在文件中搜索文本,输出匹配的行,是“global regular expression print”的缩写。
操作示例:
  • grep "pattern" file.txt → 这会输出file.txt中包含“pattern”的所有行。
  • grep -r "pattern" . → 这会在当前目录及其子目录中搜索包含“pattern”的所有文件。

awk

awk 是一种强大的文本处理工具,用于处理和分析文件中的文本数据。它可以根据模式匹配和条件执行各种操作。
常用参数:
  • F:指定字段分隔符
  • v:传递变量给 awk 程序
操作示例:
  • awk '{print}' file.txt → 这会将 file.txt 中的每一行打印到终端。
  • awk '{print $1}' file.txt → 这会将 file.txt 中的第一列打印到终端。
  • awk -F ':' '{print $2}' file.txt → 这会将 file.txt 中的第二列打印到终端。
  • awk '{sum += $1} END {print sum}' file.txt → 这会计算 file.txt 中第一列数字的总和并打印出来。

sed

sed 是一种流编辑器,用于对文本进行基本的文本转换。它的名字源自“stream editor”。
常用参数:
  • e:添加脚本到命令中
  • i:直接编辑文件
操作示例:
  • sed 's/foo/bar/g' file.txt → 这会将 file.txt 中的所有 foo 替换为 bar 并打印结果到终端。
  • sed '2d' file.txt → 这会删除 file.txt 中的第2行并打印结果到终端。
  • sed '2a\This is a new line.' file.txt → 这会在 file.txt 的第2行后插入 This is a new line. 并打印结果到终端。
  • sed -i 's/foo/bar/g' file.txt → 这会将 file.txt 中的所有 foo 替换为 bar 并保存更改。

fdisk

fdisk 命令用于磁盘分区管理。它可以创建、删除、修改和查看磁盘分区表。使用 fdisk 需要具有超级用户权限。
常用操作:
  • l:列出所有磁盘及其分区信息
  • n:创建新分区
  • d:删除分区
  • p:打印分区表
  • t:改变分区类型
操作示例:
  • fdisk -l → 这会显示系统中所有磁盘及其分区的信息。
  • fdisk /dev/sda → 这会进入 fdisk 的交互模式,您可以在提示符下输入相应的命令进行分区操作。例如:

    shutdown

    shutdown 命令用于安全地关闭系统。它可以指定时间来关闭系统,并通知所有已登录的用户。
    常用参数:
    • h:关闭系统
    • r:重启系统
    • c:取消一个已经在进行中的关机操作
    • +m:指定多少分钟后关机
    • now:立即关机
    操作示例:
    • shutdown -h now → 这条命令会立即关闭系统,所有正在运行的进程会被安全地终止,并且所有文件系统会被安全地卸载。这对于需要立即关闭系统的场景非常有用。
    • shutdown -h +10 "System is shutting down in 10 minutes.” → 该命令会在10分钟后关闭系统,并向所有已登录的用户广播一条消息,告知他们系统将在10分钟后关闭。这样,用户有时间保存他们的工作并安全退出。
    • shutdown -r now → 此命令会立即重启系统,与关闭系统类似,它会安全地终止所有进程并卸载所有文件系统,然后重启系统。
    • shutdown -c → 如果你已经安排了一个定时关机但需要取消,可以使用这条命令来取消已经安排的关机操作。

    reboot

    reboot 命令用于重新启动系统。它是 shutdown -r 的简化版本。
    操作示例:
    • reboot → 这条命令会立即重启系统。

    halt

    halt 命令用于停止所有CPU功能,但不一定会关闭电源。它通常用于诊断和维护。
    操作示例:
    • halt → 这条命令会停止系统的所有CPU功能。与 shutdown -h now 不同,它可能不会关闭电源,而是使系统进入一种不活动的状态。此命令在某些维护或诊断操作中可能会使用。一般我们使用上面两个命令就够了。
      •  
         
         

    Web 服务器之 Apache

    1. Apache 服务器介绍

    • Apache HTTP 服务器是一个开源的 Web 服务器软件,广泛应用于互联网和企业内网中。
    • 它由 Apache 软件基金会开发和维护,支持多种操作系统,包括 Linux、Windows 和 macOS。
    • Apache 服务器功能强大,支持模块化设计,可以通过加载各种模块(如 SSL、安全、认证等)来扩展其功能。
    • 反正就是很流行,很多人用,大公司都用,所以你大可放心用,背后有强大的开发团队支持,出现漏洞他们会快速地在互联网上提供修复方案。
    • Web 服务器就是用来提供网页访问的,比如你访问 www.baidu.com ,其实你是在访问百度搭建的 Web 服务器,它的服务器上包含了所有你看到的东西。
    • 现在你可以来搭建自己的 Web 服务器,然后把自己的作品上传到你的 Web 服务器,这样别人就可以来访问你的 Web 服务器,当有人来访问你的 Web 服务器时,Apache会收到请求,然后 Apache 会处理这些请求来确定要返回什么页面给用户。
    • 所以你现在应该知道什么是 Web 服务器了吧?应该也知道 Apache 是干什么的了吧?没错,它就是做牛做马的,24小时不间断地监听等待用户的请求,收到请求后把对应的数据返回给用户。

    2. 安装 Apache 服务器

    在 CentOS 7 上安装 Apache 服务器非常简。以下是安装步骤:
    1. 更新系统软件包 → yum update (这一步你可以选择跳过,除非你的服务器很久没更新了)
    1. 安装 Apache → yum install httpd
    1. 启动 Apache 服务 → systemctl start httpd
    1. 设置 Apache 开机自启动 → systemctl enable httpd
    1. 检查 Apache 服务状态 → systemctl status httpd

    3. 配置防火墙

    • 默认情况下,CentOS 7 使用 firewalld 作为防火墙。需要允许 HTTP 和 HTTPS 流量通过防火墙:
      • 如果你不想配置 firewalld 防火墙,你可以直接把服务器服务关闭 → systemctl stop firewalld ,这样你就不用执行上面 👆 这三行命令了。
      • 这一步很关键,如果你使用的是云服务器,那么你还需要登录云平台(比如阿里云)确认这台云服务器的安全组是否放行了80443端口。

      4. 关键目录和文件

      在 CentOS 7 上,Apache 的默认配置文件和目录结构如下:
      • 配置文件目录/etc/httpd/
        • 主配置文件/etc/httpd/conf/httpd.conf
          • 这是 Apache 服务器的主配置文件,包含了基本的服务器配置、虚拟主机设置、日志设置等。
        • 配置文件目录/etc/httpd/conf.d/
          • 该目录包含额外的配置文件,通常用于模块配置和虚拟主机配置。
        • 模块目录/etc/httpd/modules/
          • 该目录包含 Apache 可加载的模块。
      • 日志目录/var/log/httpd/
        • 访问日志/var/log/httpd/access_log
          • 记录所有对 Apache 服务器的请求。
        • 错误日志/var/log/httpd/error_log
          • 记录服务器的错误和诊断信息。
      • 网页根目录/var/www/
        • 默认网页根目录/var/www/html/
          • 这是 Apache 默认的网页根目录,存放网站的 HTML 文件和资源文件。
          • ⚠️⚠️⚠️ 这就是你存放网页源代码的位置,把你开发好的网页(HTML&CSS&JavaScript)放到这个目录下。

      5. 配置 Apache

      修改主配置文件

      使用文本编辑器(如 vi)打开主配置文件 /etc/httpd/conf/httpd.confvi /etc/httpd/conf/httpd.conf
      一些常见的配置选项:
      • 更改服务器管理员邮箱 → ServerAdmin webmaster@example.com
      • 更改默认网站目录 → DocumentRoot "/var/www/html"
      • 设置服务器名称 → ServerName www.example.com:80

      配置虚拟主机

      虚拟主机允许你在一台服务器上托管多个网站。可以在 /etc/httpd/conf.d/ 目录中创建新的配置文件来设置虚拟主机。例如,创建一个名为 example.com.conf 的文件 → vi /etc/httpd/conf.d/example.com.conf
      内容如下:
      创建网站目录:

      6. 测试 Apache 配置

      在更改配置后,建议使用以下命令测试 Apache 配置的语法是否正确 → apachectl configtest
      如果没有错误,重新启动 Apache 服务以应用更改 → systemctl restart httpd

      7. 检查服务状态和日志

      随时可以使用以下命令检查 Apache 服务的状态 → systemctl status httpd
      查看访问日志和错误日志以诊断问题:

      数据库服务器之 MySQL

      1. MySQL 服务器介绍

      • MySQL 是一个流行的开源关系型数据库管理系统(RDBMS)。
      • 它由 Oracle 公司开发和维护,支持多种操作系统,包括 Linux、Windows 和 macOS。
      • MySQL 被广泛用于各种应用场景,包括网站、数据仓库和商业应用。
      • 因为 MySQL 是免费的,并且有庞大的开源社区,并且性能也基本能满足大多数场景,当然不过像大企业级别的就可能满足不了了,这时候就可以去了解一下专门为企业提供数据库服务的 Oracle 。
      • 因为 MySQL 和 PHP 搭配得比较好,这可能也是 MySQL 流行的原因吧。反正学数据库肯定绕不开 MySQL,学吧少年。

      2. 安装 MySQL 服务器

      在 CentOS 7 上安装 MySQL 服务器可以通过官方 Yum 仓库来完成。以下是安装步骤:
      1. 安装 MySQL 服务器 → yum install mariadb-server
      1. 启动 MySQL 服务 → systemctl start mariadb
      1. 设置 MySQL 开机自启动 → systemctl enable mariadb
      1. 检查 MySQL 服务状态 → systemctl status mariadb

      3. 初始配置

      安装完成后,需要进行初始配置以设置 MySQL root 用户的密码和安全选项。
      1. 设置 root 密码 → mysqladmin -uroot password 'newpassword'
      1. 运行安全配置脚本 → mysql_secure_installation
        1. 这会提示你输入临时密码,并引导你完成以下设置:
          • 设置 MySQL root 用户的新密码
          • 移除匿名用户
          • 禁止 root 远程登录
          • 移除测试数据库并重新加载权限表

      4. 关键目录和文件

      在 CentOS 7 上,MySQL 的默认配置文件和目录结构如下:
      • 配置文件目录/etc/my.cnf
        • 这是 MySQL 的主配置文件,包含了服务器的全局设置和参数。
      • 数据目录/var/lib/mysql/
        • 这是 MySQL 存储数据库文件的目录。
      • 日志目录/var/log/mysqld.log
        • 这是 MySQL 的主日志文件,记录了服务器启动信息、错误和警告。

      5. MySQL 的基本使用

      基本使用好像不是这门课程的内容了,你应该找找你的 MySQL 教材来学习。这里简单写几个操作吧。
      • 使用 MySQL 客户端登录 MySQL 服务器 → mysql -u root -p
      • 创建数据库 → CREATE DATABASE mydatabase;
      • 创建用户并授予权限
        • CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
        • GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
        • FLUSH PRIVILEGES;

      6. 重要配置选项

      可以编辑 /etc/my.cnf 文件来配置 MySQL 服务器的一些重要选项 → vim/etc/my.cnf
      配置更改后,需要重新启动 MySQL 服务以使其生效 → systemctl restart mariadb

      7. 备份和恢复数据库

      • 使用 mysqldump 工具备份数据库 → mysqldump -u root -p mydatabase > mydatabase_backup.sql
      • 使用 mysql 工具恢复数据库 → mysql -u root -p mydatabase < mydatabase_backup.sql

      8. 重置 MySQL 的 root 密码

      1. 停止 MySQL 服务 → systemctl stop mariadb
      1. 以跳过授权表的方式启动 MySQL → mysqld_safe --skip-grant-tables &
      1. 登录 MySQL 或 MariaDB,不需要输入密码 → mysql -u root
      1. 选择 mysql 数据库 → USE mysql;
      1. 执行 SQL 语句来更新 root 用户的密码 → UPDATE user SET password=PASSWORD('newpassword') WHERE user='root';
      1. 执行以下命令以刷新权限,使更改生效 → FLUSH PRIVILEGES;
      1. 退出 MySQL 会话 → exit;
      1. 终止 mysqld_safemysqld 进程
        1. pkill mysqld_safe
        2. pkill mysqld
      1. 重启 MySQL 服务 → systemctl start mariadb
      1. 使用新密码登录 MySQL → mysql -u root -p
       

      © KangVcar 2016 - 2024