Linux基础(超级无敌认真好用,万字收藏篇!!!!)

Linux基础

1 Linux概述

  • Linux是一种自由和开放源码的类UNIX操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。
  • Linux是在1991年由林纳斯·托瓦兹在赫尔辛基大学上学时创立的,主要受到 Minix和Unix思想的启发。
  • Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机。

1.1 Linux特点

  1. 开放性:指系统遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。

  2. 多任务:它是指计算机同时执行多个程序,而且各个程序的运行互相独立。

  3. 多用户:是指系统资源可以被不同用户使用,每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。

  4. 良好的用户界面 :Linux向用户提供了两种界面:用户界面和系统调用。Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚动条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。

  5. 设备独立性:是指操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。 Linux是具有设备独立性的操作系统,它的内核具有高度适应能力

  6. 提供了丰富的网络功能:完善的内置网络是Linux一大特点。

  7. 可靠的安全系统:Linux采取了许多安全技术措施,包括对读、写控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。

  8. 良好的可移植性:是指将操作系统从一个平台转移到另一个平台使它仍然能按其自身的方式运行的能力。Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。

1.2 Linux和Window区别

  • 区别一:内核
    Linux操作系统使用Linux内核,Windows操作系统使用NT内核。linux操作系统是开放源码系统,可以对其程序进行编辑修改。而微软的windows系统是受微软版权保护,就是只允许微软内部进行开发及修改。

  • 区别二:价格
    Linux是免费的,Windows是收费的,不过不代表所有Linux都是免费的,有一部分进行商业运作的Linux是收费的,比如Redhat Linux。

  • 区别三:支持软件
    Windows软件支持丰富,而Linux软件支持就很少了,因为Windows硬件驱动厂商支持全面,Linux驱动这块不如Windows全面,比如百分之九十九的游戏都可以在Windows上运行,而Linux上只有很简陋的游戏。

  • 区别四:操作方式
    windows操作主要以图形界面为主,linux操作主要以命令行为主。
    linux命令行区分大小写,windows在dos界面命令下不区分大小写。

  • 区别五:文件格式
    windows 硬盘文件格式是fat32或NTSF,而linux 需要的文件格式是ext2或ext3,该操作系统还多一个SWAP格式的交换分区。

2 Linux安装

2.1 什么是虚拟化

虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。

2.2 安装虚拟机

超线程:一个内核可以有多个线程


所有虚拟机的安装步骤都千篇一律,在此就不多做赘述了…


2.3 配置网络环境

  • 桥接模式

VMware 桥接模式,也就是将虚拟机的虚拟网络适配器与主机的物理网络适配器进行交接,虚拟机中的虚拟网络适配器可通过主机中的物理网络适配器直接访问到外部网络。简而言之,这就好像在局域网中添加了一台新的、独立的计算机一样。因此,虚拟机也会占用局域网中的一个 IP 地址,并且可以和其他终端进行相互访问。

桥接模式网络连接支持有线和无线主机网络适配器。如果你想把虚拟机当做一台完全独立的计算机看待,并且允许它和其他终端一样的进行网络通信,那么桥接模式通常是虚拟机访问网络的最简单途径。

直接访问外网

在这里插入图片描述

  • NAT模式

NAT,是 Network Address Translation 的缩写,意即网络地址转换。NAT 模式也是 VMware 创建虚拟机的默认网络连接模式。使用NAT模式网络连接时,VMware会在主机上建立单独的专用网络,用以在主机和虚拟机之间相互通信。虚拟机向外部网络发送的请求数据 “包裹”,都会交由 NAT 网络适配器加上 “特殊标记” 并以主机的名义转发出去,外部网络返回的响应数据 “包裹”,也是先由主机接收,然后交由 NAT 网络适配器根据 “特殊标记” 进行识别并转发给对应的虚拟机,因此,虚拟机在外部网络中不必具有自己的IP地址。从外部网络来看,虚拟机和主机在共享一个IP地址,默认情况下,外部网络终端也无法访问到虚拟机。

此外,在一台主机上只允许有一个 NAT 模式的虚拟网络。因此,同一台主机上的多个采用 NAT 模式网络连接的虚拟机也是可以相互访问的。

通过主机访问主机网卡,再访问外网

在这里插入图片描述

在这里插入图片描述

3 Linux文件目录

/:Linux根目录

/bin:用于存放可执行文件目录,该目录下的所有命令时所有用户共享

/sbin:用于存放可执行文件的目录,该目录命令只有管理员才可以执行

/root:超级管理员的主目录

/dev:存放设备文件

/etc:存放系统管理和配置文件

/tmp: 用于存放各种临时文件,是公用的临时文件存储点

/opt:用户安装软件所在位置

/lib: 存放跟文件系统中的程序运行所需要的共享库及内核模块

/mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统

/usr:软件的默认安装位置,存放用户应用程序和文件

/boot:系统启动所需核心文件

/var:存放运行时需要改变数据的文件

/home:家目录(用户目录),Linux非root用户每个用户在此目录中都有一个独立的目录与之对应

4 Linux常用命令

4.1 文件与目录操作

  • cd /home :进入home目录

  • cd ..:返回上一级目录

  • cd ../..:返回上两级目录

  • cd -:返回上次所在目录

  • cp file1 file2:将file1复制为file2

  • cp -a dir1 dir2:复制一个目录

  • cp -a /tmp/dir1 . :复制一个目录到当前工作目录(.代表当前目录)

  • ls:查看目录中的文件

  • ls -a:显示隐藏文件

  • ls -l:显示详细信息

  • ls -lrt:按时间显示文件(l表示详细列表,r表示反向排序,t表示按时间排序)

  • pwd:显示工作路径

  • mkdir dir1:创建一个目录

  • mkdir dir1 dir2:同时创建两个目录

  • mkdir -p /dir1/dir2:创建一个目录树

  • touch 1.txt:创建一个文件

  • mv dir1 dir2 :移动/重命名一个目录;dir2存在是移动,dir2不存在是重命名;也可以对文件操作

  • rename old new fileanme:将文件名filename改为new

  • rm -f file1:删除一个文件

  • rm -rf dir1:删除 dir1 目录及其子目录内容

4.2 查看文件内容

  • cat file1:从第一个字节开始正向查看文件的内容,如果内容比较多显示最后一屏

  • head -2 file1 :查看一个文件的前两行

  • more file1:查看一个长文件的内容

  • tac file1:从最后一行开始反向查看一个文件内容

  • tail -3 file1:查看一个文件的最后三行

  • wc :统计文本的行数、字数、字符数

    -m 统计文本字符数

    -w 统计文本字数

    -l 统计文本行数

4.3 文本内容处理

  • grep str /dir/test:在文件/dir/test中查找str

  • grep ^str /dir/test:在文件/dir/test中查找以str开始的行

  • grep [0-9] /dir/test:在文件dir/test中查找包含数字的行

  • grep str -r /dir/*:在dir目录及其子目录中查找str

  • diff file1 file2:找两个文件的不同

  • sdiff file1 file2:以对比的方式显示两个文件的不同

4.4 查询操作

  • find / -name file1:从/开始进入根文件系统查找文件和目录
  • find/ -user user1:查找属于用户user1的所有文件和目录
  • find /home/user1 -name *.bin :在目录 / home/user1 中查找以 .bin结尾的文件

4.5 网络相关

  • if config:显示网卡的IP地址

  • ip addr:显示网卡的IP地址

  • ifup eth0 :弃用eth0网络设备

  • ifdown eth0 :禁用 ‘eth0’ 网络设备

  • netstat:显示各种网络相关信息, 如网络连接,路由表,接口状态,masquerade 连接,多播成员等

  • netstat -a:列出所有端口

  • netstat -n :以数字形式显示地址和端口号

  • netstat -p:proto 显示 proto 指定的协议的连接;

    proto 可以是下列协议之一: TCP、UDP、TCPv6 或 UDPv6

  • netstat -anp :组合命令,包含上边效果

  • service network restart systemctl restart network :重启网络

  • systemctl status firewalld.service :查看防火墙信息

  • systemctl stop firewalld.service :关闭防火墙

  • systemctl disable firewalld.service :禁用防火墙

  • systemctl start firewalld.service:开启防火墙

4.6 其他命令

  • su -:切换到root权限(与su有区别)

  • su 用户名:切换到指定用户下,普通用户不需要输入密码

  • exit(Ctrl+D): 退出当前登录用户

  • shutdown -h now:关机(poweroff)

  • shutdown -r now :重启(reboot)

  • top:罗列使用CPU资源最多的linux任务 (输入q退出)

  • man ping:查看参考手册(例如ping 命令)

  • ping --help :查看参考手册(例如ping 命令)同上作用类似

  • help :显示帮助

  • passwd:修改密码

  • df -h :显示磁盘的使用情况

  • ps -ef :查看所有正在运行的进程

  • ps -u 用户名 :查看指定用户正在运行的进程

  • kill pid :强制杀死进程 pid:进程号

  • cal :显示当前月历

  • cal 10 1988 :显示指定月,年的月历

  • whoami:显示当前用户

  • who :显示登录用户

  • wget:下载网络中的资源

4.7 解压缩命令

  • tar -zcvf archive.tar.gz file1:把file1打包成 archive.tar.gz
  • tar -zcvf archive.tar.gz file1 dir1 :把 file1,dir1 打包成 archive.tar.gz
  • tar -zxvf archive.tar.gz :解压缩archive.tar.gz到当前文件夹中
  • tar -zxvf archive.tar.gz -C /test:解压缩archive.tar.gz到test文件夹中 大写C
  • tar -tf archive.tar.gz :查看archive.tar.gz中的内容

注意:压缩和解压缩有多种形式来实现,没必要每个都记住,只需要使用上边命令就行

  • 格式:tar [选项] [压缩路径+压缩名称] [压缩的文件或者目录]
  • 选项:-z格式为gzip格式、-j格式为bzip2格式、-c压缩、-x解压缩、-v显示所有过程、-t查看内容、-f指定压缩后的文件名称等

5 VI/VIM的使用

所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。

但是目前我们使用比较多的是 vim 编辑器。

vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程

序员中被广泛使用。

简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以

说是程序开发者的一项很好用的工具。

连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。

在这里插入图片描述

5.1 VIM命令模式

VI/VIM的基本模式

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和

底线命令模式(Last line mode)。 这三种模式的作用分别是:


  • 用户刚刚启动 vi/vim,便进入了命令模式。

    此状态下敲键盘会被Vim识别为命令,而非输入字符。比如我们按下i,并不会输入字符,i被当作一 个命令。

    以下是常用的几个命令:

    • i a o 切换到输入模式,以输入字符。
    • x 删除当前光标所在处的字符。
    • : 切换到底线命令模式,以在最底一行输入命令。
    • 命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

5.2 VIM输入模式

  • 在命令模式下按下i a o就进入了输入模式。

    在输入模式中,可以使用以下按键

    • 字符按键以及Shift组合,输入字符

    • ENTER,回车键,换行

    • BACK SPACE,退格键,删除光标前一个字符

    • DEL,删除键,删除光标后一个字符

    • 方向键,在文本中移动光标

    • HOME/END,移动光标到行首/行尾

    • Page Up/Page Down,上/下翻页

    • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线

    • ESC,退出输入模式,切换到命令模式

5.3 底行模式

  • 在命令模式下按下:(英文冒号)就进入了底线命令模式。

    底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

    在底线命令模式中,基本的命令有(已经省略了冒号):

    • q 退出程序

    • w 保存文件

    • wq 退出保存

    • q!强制退出

6 安装JDK

  1. 查看虚拟机有无jdk

    java -version

  2. 若有jdk删除

    在/usr/lib文件夹里

  3. 官网上下载对应Linux Java JDK

  4. 通过ftp上传到Linux

    在这里插入图片描述

  5. 解压到指定文件夹

##解压缩到当前文件夹
tar -zxvf jdk-8u281-linux-x64.tar.gz
##删除压缩包
rm -rf jdk-8u281-linux-x64.tar.gz
  1. 配置环境变量
vim /etc/profile
##文件最底部引入以下内容,注意具体路径
export JAVA_HOME=/opt/jdk/jdk-11.0.18
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
  1. 刷新文件

source

  1. 安装Tomcat

操作同上

配置环境变量
export CATALINA_HOME=/opt/soft/tomcat/apache-tomcat-8.5.30
export CLASSPATH=.:$JAVA_HOME/lib:$CATALINA_HOME/lib
export PATH=$PATH:$CATALINA_HOME/bin
刷新

7 用户和组

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须先向管理员申请一个账号,然后以这个账户进入操作系统

  • 多用户操作系统,一方面可以帮助我们组织文件,一方面为用户文件安全提供保护
  • 每个用户账号都拥有一个唯一的用户名和各自的口令。
  • 用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

7.1 用户标志符UID与GID

  • UID:用户id,是用户在系统中的唯一验证符号,在/etc/passwd文件中。
  • GID:用户组id,用户组也有用户组id和用户名,存放在/etc/group中。
  • 登陆系统时,系统会自动查找上面两个文件,找到相应ID后才会进入记录密码的文件/etc/shadow中核对密码

7.1.1 用户配置文件/etc/passwd

[root@huozhexiao etc]# cat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
...
huozhexiao:x:1000:1000:huozhexiao:/home/huozhexiao:/bin/bash
root :  x	  : 0    : 0  : root : /root  :    /bin/bash
用户名:密码占位符:用户id:组id:用户说明:用户主目录: 登陆shell

序号 说明
1 用户名
2 密码占位符,/etc/passwd文件所有用户都可以读取,为了安全,密码存放在/etc/shadow中
3 UID这个就是用户标识符,
Linux对UID的使用有以下限制:
0用于系统管理员(root);
1-499保留给系统用户使用,是惯例,
用于系统上启用的服务希望用较小的权限去执行而不是直接使用root权限,所以就得提供这些服务的所有者账号,这些账号通常不可登录;
1-99:各版本自行创建的系统账号,100-499若用户有系统账号的需求时,可以使用的账号 UID。
500-65535的都是用户自建账号
4 GID这个是用户组标识符,用户组相关信息也有类似的文件存放在/etc/group文件中
5 用户信息说明列,没什么重要用途,用于说明账号的意义
6 主文件夹,默认的用户主文件夹在/home/IDname中
7 shell,当用户登录后就会取得一个Shell来与系统的内核通信 ,以进行用户的操作任务,默认你shell会使用bash就是在这里指定的

7.1.2 密码文件/etc/shadow

[root@huozhexiao etc]# cat shadow
root:$6$dUZLEKHPglctVIHc$fnbIZ87j3djD1tQUqwa8NuWYLAIpa7tf1eLF9.HjI0eEJ8Cj2wtPktC6ZVkAFahjst7qaPyUfzwLtNNJ.RkJu1::0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
sync:*:18353:0:99999:7:::
shutdown:*:18353:0:99999:7:::
...
huozhexiao:$6$9/DVWjonOcFI3YdQ$BKLMLHADj2II0RraW5gYhpmYuU4yZiTQuI8Weya0tHcfexRB0Gf05YJUjDs2KsSxgivOrURE9qsHTaScyAe8V1::0:99999:7:::
1  huozhexiao
2  :$6$9/DVWjonOcFI3YdQ$BKLMLHADj2II0RraW5gYhpmYuU4yZiTQuI8Weya0tHcfexRB0Gf05YJUjDs2KsSx
givOrURE9qsHTaScyAe8V1
3  :
4  :0
5  :99999
6  :7
7  :
8  :
9  :

序号 说明
1 用户账号,与密码对应
2 密码,经过编码加密之后的密码,只有root用户才可以读写
3 最近更改密码的日期,注意该日期是以格林尼治日期为起始点1,每过一天就累加1计算所得
4 密码不可被变更的天数,改密码最近一次被更改之后需要经过几天才可以被更改,如果是0 的话,表示密码随时可以改动
5 密码需要重新更改的天数,经常更改密码是好习惯,该字段的含义是最近一次修改密码之后 必须多少天之内再次更改密码,必须在该天数范围内重置密码,否则该账号的密码会变为过期特性
6 密码需要更改期限的警告天数,当账号的密码有效期限快要到的时候,系统将依据该字段给用户发出警告,提醒他密码再过多少天将要过期,尽快修改密码
7 密码过期后的宽限时间,密码过期后,在宽限时间内登录系统,系统会强制要求你必须要修改密码才可以登录使用系统,但是如果在该宽限时间内没有登录系统,没有修改密码,name密码将会失效,账号再也无法使用该密码登录了
8 账号失效日期,是指该账号在此字段规定的日期之后再也无法使用了
9 最后一个字段是保留字段,类似于备注

7.1.3 用户组配置文件/etc/group

[root@huozhexiao etc]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
...
huozhexiao:x:1000:huozhexiao
huozhexiao
:x
:1000
:huozhexiao

序号 说明
1 用户所在的组的名称
2 密码位,一般不使用
3 GID,用户组ID
4 属于该组的用户列表

7.1.4 用户组密码文件/etc/gshadow

[root@huozhexiao etc]# cat /etc/gshadow
root:::
bin:::
daemon:::
sys:::
adm:::
tty:::
disk:::
...
huozhexiao:!!::huozhexiao
huozhexiao
:!!
:
:huozhexiao

序号 说明
1 用户组名
2 密码列,开头为!表示无合法密码,所以无用户组管理员
3 用户组管理员账号
4 该用户组所属账号

7.2 用户的增删改

7.2.1 添加用户

useradd [-u UID] [-g 初始用户组] [-G 次要用户组] [-m|M 强制创建用户主文件夹|强制不创建用户
主文件夹] [-c说明栏] [-d 主文件夹绝对路径]
[-s shell指定shell,未指定则设为/bin/bash] 用户账号名
  • 创建一个用户,用户id为1001,组id为1000,强制创建用户主文件夹,说明为测试,用户账号名为xiaolizi
useradd -u 1001 -g 1000 -m -c 测试 xiaolizi

7.2.2 修改用户

  • 修改密码

    passwd 用户名
    

    [root@huozhexiao etc]# passwd xiaolizi
    更改用户 xiaolizi 的密码 。
    新的 密码:
    无效的密码: 密码少于 8 个字符
    重新输入新的 密码:
    passwd:所有的身份验证令牌已经成功更新。
    

    无效的密码: 密码少于 8 个字符(该提示可不用管)

  • 修改用户信息

    usermod [-cdegGlsuLU] 用户名
    -l:后面接账号名称,即是修改账号名称,/etc/passwd的第一列,usermod -l a b(b改为a);
    -g:添加组 usermod -g sys tom;
    -G:后面接次要用户组;
    -c:后接账号说明,/etc/passwd的第五列,可以加入一些账号的说明;
    -L:暂时将用户的密码冻结,让其无法登录;
    -U:将/etc/shadow密码列的!去掉,也就是将账号密码冻结解除;
    -d:后面接账号的主文件夹,/etc/passwd文件的第六列;
    -e:后面接日期,/etc/shadow的第八个字段数据;
    -f:后面接天数,为shadow的第七个字段;
    -a:与-G组合使用增加次要用户组的支持而非设置;
    -s:后面接shell的实际文件;
    -u:后面接UID数字,即/etc/passwd第三列的数据;
    

7.2.3 删除用户

userdel [-r] 用户名
这个指令就比较简单,顾名思义就是删除用户的相关数据:用户账号/密码相关参数:/etc/passwd,/etc/shadow;
用户组相关参数:/etc/group,/etc/gshadow;
用户个人文件数据:/home/username,/var/spool/mail/username…
-r 删除账号时同时删除目录(remove)

7.3 用户组的增删改

基本组(私有组)——伴随着用户创建而创建 与用户同名(也可以自己设置) 但创建一个用户的时候必有其组

附加组(公有组)——直接创建空组,可以添加已有的用户,给组设置权限,该组中所有用户都具备此权限

7.3.1 用户组的增加

groupadd [-g] [-r] 用户名
-g:设置当前组编号;
-r:新建系统用户组,与/etc/login.defs内的GID_MIN有关,不建议使用
  • 创建一个组id为10086组名为test的组
[root@huozhexiao etc]# groupadd -g 10086 test

7.3.2 用户组的修改

groupmod [-g gid] [-n group_name] 用户组名
-g:修改既有的GID数字
-n:修改既有的组名;
  • 修改组test的组id为10011,组名为test01
[root@huozhexiao etc]# groupmod -g 10011 -n test01 test

7.3.3 用户组的删除

groupdel 用户组名
只有某个用户组不是用户的初始用户组时才能被删除,也就是说要删除某个用户组,必须确
认/etc/passwd内的账号没# 有任何人使用用户组作为初始用户组。
  • 删除组test01
[root@huozhexiao etc]# groupdel test01

8 权限管理

  • 访问权限

读取 r:允许查看文件内容、显示目录列表。

写入 w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录。

可执行 x:允许运行程序、切换目录。

  • 归属

属主:拥有该文件或目录的用户账号。

属组:拥有该文件或目录的组账号。

在这里插入图片描述

8.1 更改操作权限

  • chmod 权限 文件
  • chmod 参数 权限 文件
who 用户类型 说明
u user 文件所有者
g group 文件所有者所在组
o others 所有其他用户
a all 所用用户, 相当于 ugo
操作符号 说明
+ 添加某个权限
- 取消某个权限
= 赋予给定权限并取消其他所有权限(如果有的话)

例如

chmod ug=rwx,o=x file
chmod 771 file

8.2 chown命令

更改某个文件或目录的属主和属组

chown [选项] 用户或组 文件
- R 递归式地改变指定目录及其下的所有子目录和文件的拥有者。
- v 显示chown命令所做的工作。

9 CentOS7安装软件

9.1 安装Redis

  • 安装依赖

因为redis是用C语言开发的,所以在安装之前需要确定是否安装gcc环境(gcc -v),如果没有安转可以 执行一下命令进行安装。

[root@localhost ~]# yum install -y gcc
  • 下载Redis 7

    ① 官网下载 :https://redis.io

    ② get下载:

    [root@localhost ~]# wget https://download.redis.io/releases/redis-7.0.4.tar.gz
    
  • 解压

  • 编译安装

    注意:需要在指定目录下编译安装

    [root@localhost redis]# make MALLOC=libc
    
  • 启动

    [root@localhost redis]# ./redis-server    
    [root@localhost redis]# ./redis-server ../redis.conf & 读取指定的配置文件启动redis服务
    
  • Windows运行客户端

    不能进入,关闭防火墙

    再此进入

    报错:

    (error) DENIED Redis is running in protected mode because protected mode is enabled and no password is set for the default user. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. 3) If you started the server manually just for testing, restart it with the '--protected-mode no' option. 4) Setup a an authentication password for the default user. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.

    • 我们需要配置远程访问

    修改redis.conf文件

    #绑定改为
    bind 0.0.0.0 ::1
    #bind 127.0.0.1 ::1
    
    #关闭保护模式
    protected-mode no
    

    启动

    [root@localhost redis]# ./redis-server ../redis.conf & 读取指定的配置文件启动redis服务
    

9.2 安装mysql

  • 下载
  • 解压
[root@huozhexiao mysql]# tar -xvf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar
  • 安装依赖
#1.安装common
rpm -ivh mysql-community-common-8.0.28-1.el7.x86_64.rpm --nodeps --force
#2.安装 libs
rpm -ivh mysql-community-libs-8.0.28-1.el7.x86_64.rpm --nodeps --force
#3.安装client
rpm -ivh mysql-community-client-8.0.28-1.el7.x86_64.rpm --nodeps --force
#4.安装server
rpm -ivh mysql-community-server-8.0.28-1.el7.x86_64.rpm --nodeps --force
  • 初始化
mysqld --initialize
  • 授权
chown mysql:mysql /var/lib/mysql -R;
  • 启动
systemctl start mysqld.service;
  • 检查状态
systemctl status mysqld.service;
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2023-04-16 16:44:09 CST; 38s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 7199 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 7227 (mysqld)
   Status: "Server is operational"
    Tasks: 38
   CGroup: /system.slice/mysqld.service
           └─7227 /usr/sbin/mysqld

  • 获取初始密码
cat /var/log/mysqld.log | grep password
  • 登录
mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.28

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> ^C
  • 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY
    -> 'root';
  • 配置远程访问

    ① 授予远程访问权限

    # 授予用户远程登录的权限
    grant all privileges on *.* to 'root'@'%' with grant option;
    # 刷新权限
    flush privileges;
    

    设置user地址为%

    --------------------------------------------------
    select host,user from user where user='root';
    --------------------------------------------------
    update user set host='%' where user='root';
    
  • 创建用户

    CREATE USER <用户> [IDENTIFIED BY [ PASSWORD ] 'password'] [ ,用户 [ IDENTIFIED BY
    [ PASSWORD ] 'password' ]]
    
    ---------------
    create user test@'%' identified by 'test';
    
  • 给新建用户设置只读权限

    grant select  on xxx.* to 'test'@'%' with grant option;
    # 刷新权限
    flush privileges;
    
  • 授予权限

    GRANT priv_type [(column_list)] ON database.table
    TO user [IDENTIFIED BY [PASSWORD] 'password']
    [, user[IDENTIFIED BY [PASSWORD] 'password']] ...
    [WITH with_option [with_option]...]
    

    权限相关字符

    其中:

    • priv_type 参数表示权限类型;

    • columns_list 参数表示权限作用于哪些列上,省略该参数时,表示作用于整个表;

    • database.table 用于指定权限的级别;

    • user 参数表示用户账户,由用户名和主机名构成,格式是“‘username’@‘hostname’”;

    • IDENTIFIED BY 参数用来为用户设置密码;

    • password 参数是用户的新密码。

    • WITH 关键字后面带有一个或多个 with_option 参数。这个参数有 5 个选项,详细介绍如下:

    • GRANT OPTION:被授权的用户可以将这些权限赋予给别的用户;

    • MAX_QUERIES_PER_HOUR count:设置每个小时可以允许执行 count 次查询;

    • MAX_UPDATES_PER_HOUR count:设置每个小时可以允许执行 count 次更新;

    • MAX_CONNECTIONS_PER_HOUR count:设置每小时可以建立 count 个连接;

    • MAX_USER_CONNECTIONS count:设置单个用户可以同时具有的 count 个连接。

    权限类型

    权限名称 对应user表中的字段 说明
    SELECT Select_priv 表示授予用户可以使用 SELECT 语句访问特定数据库中所有表和视图的权限。
    INSERT Insert_priv 表示授予用户可以使用 INSERT 语句向特定数据库中所有表添加数据行的权限。
    DELETE Delete_priv 表示授予用户可以使用 DELETE 语句删除特定数据库中所有表的数据行的权限
    UPDATE Update_priv 表示授予用户可以使用 UPDATE 语句更新特定数据库中所有数据表的值的权限。
    REFERENCES References_priv 表示授予用户可以创建指向特定的数据库中的表外键的权限。
    CREATE Create_priv 表示授权用户可以使用 CREATE TABLE 语句在特定数据库中创建新表的权限。
    ALTER Alter_priv 表示授予用户可以使用 ALTER TABLE 语句修改特定数据库中所有数据表的权限。
    SHOW VIEW Show_view_priv 表示授予用户可以查看特定数据库中已有视图的视图定义的权限。
    CREATE ROUTINE Create_routine_priv 表示授予用户可以为特定的数据库创建存储过程和存储函数的权限。
    ALTER ROUTINE Alter_routine_priv 表示授予用户可以更新和删除数据库中已的存储过程和存储函数的权限
    INDEX Index_priv 表示授予用户可以在特定数据库中的所有数据表上定义和删除索引的权限。
    DROP Drop_priv 表示授予用户可以删除特定数据库中所有表和视图的权限。
    CREATE TEMPORARY TABLES Create_tmp_table_priv 表示授予用户可以在特定数据库中创建临时表的权限。
    CREATE VIEW Create_view_priv 表示授予用户可以在特定数据库中创建新的视图的权限。
    EXECUTE ROUTINE Execute_priv 表示授予用户可以调用特定数据库的存储过程和存储函数的权限。
    LOCK TABLES Lock_tables_priv 表示授予用户可以锁定特定数据库的已有数据表的权限。
    ALL 或 ALL
    PRIVILEGES 或 SUPER
    Super_priv 表示以上所有权限/超级权限

  • 学习来自加中实训

猜你喜欢

转载自blog.csdn.net/woschengxuyuan/article/details/130185326