1. Linux高级-笔记

2. 回顾

2.1. 目录操作命令

命令名 功能
cd 切换目录
mkdir 创建目录
ls 查看目录内容
find 查找目录和子目录
mv 移动改名
cp 复制文件
rm 删除

2.2. 文件操作命令

命令名 功能
cat 查看文件内容
more 分屏显示内容
less 翻页显示内容
touch 创建空文件
vim 编辑文件,三种模式:命令模式,编辑模式,底行模式
tar 压缩和解压

2.3. 其他命令

命令名 功能
pwd 显示路径
ps 显示运行的进程
kill 杀死进程
free 显示空闲的内存
df 硬盘的使用情况
shutdown now 关机
reboot 重启

2.4. 文件权限

命令名 功能
chmod 角色:u 属主 g 属组 o 其它 a 所有
操作:+ = -
权限:r 读取 w 写 x 执行 - 没有权限

2.5. 服务管理的命令

服务:crond 定时任务 network 网络服务

服务管理命令 功能
systemctl start 服务名 开启
systemctl stop 服务名 停止
systemctl status 服务名 显示服务状态
systemctl enable 服务名 开机自启动
systemctl disable 服务名 关闭开机自启动

3. 学习目标

  1. 与网络有关的命令
    1. 能够使用Linux中的网络管理命令
    2. 能够使用Linux中防火墙配置命令
    3. 能够使用Linux中SSH免密登录命令
  2. 重点:能够在Linux中安装软件,搭建项目运行环境
    1. 能够在Linux系统中安装jdk软件
    2. 能够在Linux系统中安装mysql软件
    3. 能够在Linux系统中安装tomcat软件
    4. 能够在linux系统中安装redis软件
    5. 能够在Linux系统的tomcat中部署发布项目
  3. 能够使用Linux中基本用户管理命令

4. 主机名的修改

4.1. 目标

  1. 修改服务器主机名

  2. 网络服务的开启和关闭

4.2. 主机名配置

​ 需求:默认主机名是localhost,我们希望改为有含义的主机名。如:heima,itcast等主机名。类似于Windows中修改主机名: 1553589164649

4.2.1. 语法格式

修改主机名 说明
hostname 显示当前主机名
hostname 新主机名 修改主机名,重启以后又还原
hostnamectl set-hostname 新主机名 永久修改,重启以后也是起作用的

4.2.2. 操作演示:

  1. 查看当前的主机名
  2. 设置新的主机名为itheima,再查看当前的主机名
  3. 设置新的主机名为itheima,重启以后仍然有效

4.2.3. 执行结果

4.3. 小结

命令 说明
hostname 新主机名 临时修改主机名
hostnamectl set-hostname 新主机名 永久修改主机名

5. 域名映射

5.1. 目标

在Linux中配置服务器的域名

5.2. 为什么要配置域名

我们希望通过域名来访问互联网的主机,而不是输入又长又难记的IP地址。

1553591048253

5.3. 域名访问网站的过程

DNS概念和作用:Domain Name Server 域名解析服务器

访问流程如下:

  1. 访问DNS,查询这个域名对应的IP地址
  2. 访问真实的服务器IP地址
  3. 如果直接输入IP地址访问,访问速度更快。

    1553591057989

Windows下本机的hosts文件是 c:\windows\System32\drivers\etc\hosts,这是一个文本文件。

5.4. 修改Linux域名映射文件

在Linux中,/etc/hosts文件用于在主机名与IP地址之间进行映射。所以你想访问一个什么样的主机名,就需要把这个主机名和它对应的IP地址配置在/etc/hosts文件中。

5.5. 操作步骤

  1. 首先ping newboy看能否访问这个地址
  2. 修改hosts文件命令:vim /etc/hosts
  3. 将本机局域网的ip地址与newboy这个名字进行映射。一个ip地址后面可以映射多个域名地址。
  4. 再次使用ping newboy,发现可以访问这个名字。实现域名与ip地址的映射。

5.6. 执行结果

1553591104227

5.7. 小结

  1. 域名映射修改哪个文件

/etc/host文件

  1. 什么是DNS,它有什么用?

    域名解析服务器,将域名映射成对应的IP地址。

6. 查看网络进程

6.1. 目标

如何查看活动的网络进程

6.2. 查看网络进程

6.2.1. 语法格式

netstat [参数] 参数 功能
无参 查看活动的网络进程
-n number 显示进程访问的IP地址和端口号
-t tcp 显示使用TCP协议的进程
-l listener 显示正在监听中进程
-p programs 显示进程的程序的名字

6.2.2. 操作演示

  1. 显示TCP协议的网络连接
  2. 显示TCP协议和监听中的网络连接
  3. 显示TCP协议和监听中的网络连接,显示IP地址和端口号
  4. 显示TCP协议和监听中的网络连接,显示IP地址和端口号,显示程序的名字

6.2.3. 执行结果

1553591523827

1553591539168

6.3. 小结

netstat [参数]
无参 显示所有的网络进程
-n number 显示IP地址和端口号
-t tcp 显示TCP协议
-l listener 显示状态是监听状态
-p programs 显示进程的PID和名字

7. 虚拟机快照

7.1. 目标

  1. 什么是快照
  2. 快照的操作

7.2. 介绍

虚拟机“快照”是虚拟机磁盘文件在某个时间点及时的副本备份。系统崩溃或系统异常,你可以使用恢复到快照指定时间点系统状态。

7.3. 工具栏

1563793774832

7.4. 定义快照

1563793797124

1563793823429

7.5. 使用快照

当系统环境崩溃或系统异常时,我们希望当前系统恢复到以前某个时间点正常状态,可以使用快照进行恢复

1563793859264

7.6. 小结

快照的作用是什么?

备份系统当前状态,以后可以快速的恢复到当前状态

8. 克隆虚拟机

8.1. 概念

就是复制已有的虚拟机系统创建出一个一模一样的虚拟机系统。

8.2. 作用

克隆可以快速复制创建出多台linux系统,便于后面我们学习负载均衡多台linux系统进行测试。

8.3. 实现步骤

  1. 关闭现有itheima虚拟机

    1553590763233

  2. 点击虚拟机itheima,出现如下效果

    1553590771853

  3. 如图操作

    1553590831620

  4. 点击下一步

    1553590847667

  5. 点击下一步

    1553590856740

  6. 如图操作下一步

    1553590862646

  7. 如下图操作

    1553590870726

    1553590875407

    1553590882897

  8. 效果

    1553590891609

  9. 启动itheima2虚拟机

  10. 执行命令:vim /etc/sysconfig/network-scripts/ifcfg-ens33

    修改其中配置的固定ip,避免与itheima虚拟机ip冲突

    1553590899337

  11. 可选:修改主机名

  12. 重启网络服务

    1553590917847

8.4. 小结

  1. 克隆虚拟机后要做什么事情?

    1. 修改IP地址
    2. 修改主机名字
    

9. 防火墙配置

9.1. 目标

  1. 防火墙的管理命令
  2. 开放端口允许外部连接
  3. 移除端口不允许外部连接

9.2. 介绍

防火墙类似于一个关卡检查人员,当你访问其他人的电脑,或者其他人访问你的电脑,都要进行拦截并进行处理,有的阻止,有的放行,有的转发。

默认情况下防火墙在开机以后就自动启动了。

9.2.1. 语法格式

防火墙的服务管理

命令 作用
systemctl start firewalld 开启防火墙
systemctl stop firewalld 关闭防火墙
systemctl enable firewalld 开启自启动防火墙
systemctl disable firewalld 关闭开机自启动防火墙
systemctl status firewalld 显示防火墙状态

9.2.2. 操作演示

  1. 确认当前是管理员的账户,查看防火墙当前的状态
  2. 关闭防火墙,再查看防火墙的状态
  3. 再次开启防火墙,查看防火墙的状态

9.2.3. 执行结果

1553591585545

9.3. 命令firewall-cmd

外网或内网需要连接到当前系统内的程序进行操作,需要linux系统开放程序端口,否则无法访问。

firewall-cmd 向防火墙中添加或删除指定端口号
--zone=public 将端口号添加到防火墙中哪个区域
public: 公共区域,默认值。可以让互联网上所有的机器访问这个端口号
internal: 内部区域,让局域网中,内部中机器来访问这个端口号
是public的一个子集
--add-port=端口/tcp 添加指定的端口号,使用TCP协议
--remove-port=端口/tcp 删除指定的端口号,使用TCP协议
--permanent 永久的添加,主机重启了也是起作用的
--list-all 显示所有已经添加的端口号
--reload 重启加载端口的规则,让新的端口号起作用

9.3.1. 步骤

  1. 永久开放443端口,添加到公开区域,允许外部连接
  2. 重新加载防火墙的规则
  3. 显示所有打开的端口号
  4. 从公共区域中,永久移除443端口,不允许外部连接
  5. 重新加载防火墙规则
  6. 显示打开的端口号

9.3.2. 效果

1563798960456

1563799088361

9.4. 小结

说说下面代码的作用

firewall-cmd --zone=public --add-port=8080/tcp --permanent
永久的向公共区域添加8080的端口号

firewall-cmd --reload
重新加载新的规则

firewall-cmd --list-all
显示所有添加到端口号

10. SSH免密登录

10.1. 目标

  1. 输入密码登录另一台服务器
  2. 免密登录的原理
  3. 使用免密登录另一台服务器

10.2. 为什么要登录

不同的Linux主机之间需要互相访问,就需要登录。在Linux中不同主机之间通信使用的是SSH协议

10.3. SSH工作机制

SSH协议概念和作用: 安全壳协议Secure SHell Protocol,用于Linux主机之间相互通信的一种加密的协议。

SSH登录有两种验证机制:

1) 输入用户名和密码的方式

2) 免密登录的方式,不需要输入用户名和密码就可以实现安全登录

10.4. 基于口令的安全验证

只要你知道另一台机器上用户的帐号和口令,就可以登录到远程主机。

命令 功能
ssh 服务器地址 从一台主机登录另一台主机,默认是输入用户名和密码登录

10.4.1. 具体操作:

itheima这台机器有密登录à itcast这台机器

1553591730548

10.4.2. 操作演示:

  1. 先查看itcast这台机器的ip地址,假设是192.168.56.101
  2. 在客户端itheima这台机器中输入:ssh 192.168.56.101 连接itcast服务端机器。
  3. 输入root用户在itcast服务端 192.168.56.101这台机器上的密码:root。登录成功,后期操作的就是itcast这台机器了。
  4. 如果输入exit,则退出itcast 192.168.56.101这台机器,回到itheima客户端这台机器。
  5. 这时在itheima这台机器下会生成一个隐藏的.ssh目录,下面有一个known_hosts文件,用于保存itcast这台机器的数字签名。

10.4.3. 执行效果

1553591776267

10.5. 免密登录方式配置

如果网络中Linux服务器比较多,需要记住每台服务器的密码也是比较痛苦的事。你无需知道另一台机器上的帐号和口令,也可以登录到远程主机。我们说的SSH免密登录,就说的是这种方式。

10.5.1. 公钥与私钥

  1. 公钥和私钥是成对出现的,公钥可以用来加密(解密),而私钥可以用来解密(加密)。 公钥和私钥是全球唯一配对的。
  2. 公钥是公开的,所有人都可以取得,私钥是私有的,只有自己知道。

    问:王五怎样知道某一瓶毒药是张三的还是李四的?

1553591842283

10.5.2. 免密登录的原理

1553591884807

10.5.3. 操作指令

命令 说明
ssh-keygen 在客户端生成一对公钥和私钥
ssh-copy-id 服务器地址 将公钥发送给服务器

10.5.4. 客户端免密登录服务器

需求:itheima这台机器免密登录itcast这台机器

1553591929818

10.5.5. 生成公钥和私钥:

  1. 在客户端itheima生成公钥和私钥
  2. 客户端itheima将公钥发送给itcast服务器端保存
  3. 以后客户端itheima就可以免密登录itcast服务端

10.5.6. 免密登录操作

  1. 在itheima客户端这台机器上输入:ssh-keygen,如有提示,按回车,生成itheima客户端这台机器的公钥和私钥。生成的公钥和私钥在root/.ssh目录下。id_rsa是私钥,id_rsa.pub是公钥。
  2. 在itheima客户端这台机器上输入:ssh-copy-id 192.168.56.101, itcast的ip地址,按回车,将刚刚生成的itheima这台机器的公钥复制到itcast服务器这台机器的用户目录下,保存在root/.ssh/authorized_keys文件中。这个文件的内容与生成的公钥id_rsa.pub是一样的。
  3. 输入itcast这台服务器的登录密码,这时免密配置成功。
  4. 在itheima客户端这台机器上输入:ssh 192.168.56.101,再也不用密码了。

10.5.7. 免密登录执行结果

1553591975598

1553591995049

10.6. 小结

命令 功能
ssh 服务器地址 登录的另一台主机
ssh-keygen 生成公钥和私钥
ssh-copy-id 服务器地址 将公钥复制到服务器

11. JDK安装

11.1. 目标

在Linux下安装JDK

11.2. JDK安装步骤

  1. 进入“/soft”目录,解压jdk到指定目录/usr/local下
tar -zxvf jdk-9.0.4_linux-x64_bin.tar.gz -C /usr/local/

注:在客户端软件中按ctrl+shift复制,shift+insert粘贴或鼠标右键

1553592088043

查看解压后的目录,目录中有jdk-9.0.4为jdk解压的目录

1553592095672

  1. 配置jdk环境变量,打开/etc/profile配置文件,将下面配置拷贝进去。export命令用于将shell变量输出为环境变量
#set java environment
JAVA_HOME=改成自己的jdk的安装目录
CLASSPATH=.:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

命令1:vim /etc/profile

命令2:在文件末尾处,输入o(表示在光标下插入新行),复制上面的环境变量配置粘贴如图位置,并写入保存

1553592147214


  1. 重新加载/etc/profile配置文件,并测试
source /etc/profile

1553592168514


  1. 判断JDK是否安装成功

1553592185616

11.3. 编写Hello World程序运行

  1. 使用vim编写Hello World

    1553592224391

  2. 编译成字节码文件

1553592236037

  1. 执行Java程序

1553592244275

11.4. JDK安装小结

  1. 解压到压缩包到:/usr/local
  2. 配置环境变量:/etc/profile
  3. 重新加载配置: source

12. 软件安装命令

12.1. 目标

  1. rpm软件管理器命令

  2. yum软件安装和删除命令

12.2. 命令:rpm

类似于一个软件管家

1553592387972

12.2.1. 语法格式

rpm 参数 软件包 参数说明
作用 类似于一个软件管理工具
-v 显示软件安装详情
-q <软件名> 查询指定的软件是否安装了
-a 查询所有已经安装的软件
-h 显示软件安装的进度条,安装的百分比
-i <软件名> 安装 install,指定要安装的软件名字

12.2.2. 常用的组合

  1. 查看所有安装的软件
rpm -qa
  1. 查看gcc-c++这个软件包是否安装
rpm -q gcc-c++
  1. 安装指定的软件 **.rpm
rpm -ivh 软件名

12.2.3. 执行结果

1553599088279


12.3. 命令:yum

12.3.1. 功能

yum(全称为 Yellow dog Updater, Modified)能够从指定的服务器自动下载包并且安装,可以自动处理依赖关系,一次安装所有依赖的软件包。

12.3.2. 语法格式

yum [参数] [命令] <安装包> 说明
参数:-y 在软件安装过程中所有的提示回答yes
命令:install 安装指定的软件
命令:remove 删除指定的安装包

12.3.3. 示例:安装gcc-c++ 这个安装包,安装的提示全部回答yes

yum -y install gcc-c++

12.4. 小结

rpm 参数 软件包 说明
作用 相当于一个软件管理器
-v 显示详情
-q <软件名> 查询指定的软件是否安装
-a 查询所有
-h 显示安装进度百分比
-i <软件名> 安装指定的软件
yum [参数] [命令] <安装包> 可以从服务器上下载需要安装包
参数:-y 所有的回答yes
命令:install 安装
命令:remove 删除

13. MySQL在线下载安装

13.1. 目标

在线安装MySQL 5.6

13.2. 过程

1553599768593

注:需要连接互联网,在线mysql的安装包,5.6的版本大约86M

1) 查看CentOS是否自带的MySQL,如果已经安装需要卸载。如果没有找到,则表示没有安装。

1553599799260


2) 在线获取CentOS7的mysql的rpm安装文件,直接执行如下命令:

wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm

这条语句只是下载了一个rpm文件,25K大小

1553599820496

3) 执行安装命令:

rpm -ivh mysql80-community-release-el7-1.noarch.rpm

1553599838102



4) 得到两个配置文件,在/etc/yum.repos.d目录下。

4.1) mysql-community.repo用于指定下载哪个版本的安装包

4.2) mysql-community-source.repo用于指定下载哪个版本的源码

1553599859888


5) 修改MySQL的下载配置文件

进入目录命令:

cd /etc/yum.repos.d

编辑配置文件命令:

vim mysql-community.repo

我们下载MySQL 5.6,把5.6下的enabled设置为1,表示下载。

1553599882380

把MySQL8的下载关闭,将enabled设置为0

1553599889681

保存修改退出。

6) 在当前目录/etc/yum.repos.d下执行下面的命令,开始在线下载:客户端,服务器端,开发的工具包。

yum -y install mysql-community-client mysql-community-server mysql-community-devel

这里需要比较长的时间,要从互联网上下载86M左右的内容

1553599916005

7) 使用rpm命令,可以查询到mysql已经安装好的包

1553599927115


14. MySQL权限和端口号设置

14.1. 启动MySQL服务并登录

1) 启动mysql的服务

systemctl start mysqld

2) 将mysql加到系统服务中并设置开机启动

systemctl enable mysqld

3) 登录mysql,root用户默认没有密码

mysql -uroot

1553599970843

4) 在mysql中修改自己的密码

set password = password('密码'); 
flush privileges;  //刷新权限

1553599991396


14.2. 设置远程访问权限、开放端口号

1) 开启mysql的远程登录权限,默认情况下mysql为安全起见,不支持远程登录mysql,所以需要设置开启,并且刷新权限缓存。远程登录mysql的权限登录mysql后输入如下命令:

-- 给root指定所有的权限,在任何电脑上可以远程登录
grant all privileges on *.* to 'root'@'%' identified by 'root';
-- 从mysql数据库中的授权表重新载入权限
flush privileges;

2) 开放Linux的对外访问的端口3306

#开放的端口永久保存到防火墙
firewall-cmd --zone=public --add-port=3306/tcp --permanent

#重启防火墙
systemctl restart firewalld

14.3. 客户端Windows连接MySQL

1) 在本地Windows系统使用SQLyogEnt.exe软件连接虚拟机中的Linux系统安装的mysql

1553600078271

2) 在客户端操作,创建数据库test

1553600095629

3) 在Linux上可以看到新创建的数据库test

1553600107838

14.4. 小结

  1. 在线下载mysql
  2. 启动mysql服务
  3. 开放远程访问权限,开放3306端口号

15. 安装Redis

15.1. 安装过程介绍

  1. 安装编译环境并且编译
  2. 安装redis
  3. 设置成后台运行
  4. 打开防火墙6379端口号
  5. 设置IP地址的bind

15.2. 安装环境C语言的编译环境

redis是C语言开发,安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境。如果没有gcc环境,需要安装gcc:

yum -y install gcc-c++

​ 安装过程信息如下,大约需要下载39M。

1554277476762

15.3. redis安装

  1. 上传"redis-3.2.11.tar.gz"到Linux系统/soft目录下

  2. 进入soft目录,将"redis-3.2.11.tar.gz"解压到当前目录

cd /soft  
tar -zxvf redis-3.2.11.tar.gz
  1. 进入redis-3.2.11目录,使用make命令编译redis

make

如下信息代表编译成功

1554277495378

  1. 在redis-3.2.11目录中,使用以下命令,将redis安装到/usr/local/redis指定的目录下
make PREFIX=/usr/local/redis install

1554277514726

​ 安装成功后在/usr/local/redis/bin目录下可以看到如下结构,redis.conf文件还没有,要从刚解压的目录下复制过来。

15.4. redis启动服务器

15.4.1. 前端模式启动

​ 直接运行bin/redis-server以前端模式启动,前端模式启动的缺点是启动完成后,不能再进行其他操作,如果要操作必须使用ctrl+c,同时redis-server程序结束,不推荐使用此方法。

./redis-server

使用CTRL+ C 停止前端模式

1554277598623

15.4.2. 后端模式启动

  1. 将之前解压出来的/soft/redis-3.2.11/redis.conf 配置文件复制到安装好的/usr/local/redis/bin/目录下

1554277608467

  1. 修改redis.conf配置文件,修改daemonize yes 以后端模式启动。
vim redis.conf

1554277619355

  1. 启动时,指定配置文件
cd /usr/local/redis/bin
 ./redis-server redis.conf
  1. 查看启动的后台进程
ps -aux | grep redis

1554277637067

15.5. 启动客户端

  1. 进入redis/bin目录,启动"redis-cli"
./redis-cli

1554277662649

  1. 操作Redis,添加一个字符串的键,显示字符串的键,删除字符串的键

1554277667875

15.6. redis停止

在客户端向Redis发送shutdown命令

  1. 方法1:在Linux命令行下输入 ./redis-cli shutdown

  2. 方法2:在Redis客户端里面输入shutdown

1554277680010

15.7. 远程访问Redis

15.7.1. 打开防火墙

如需远程连接redis,需配置redis端口6379在Linux防火墙中开放

#开放的端口永久保存到防火墙
firewall-cmd --zone=public --add-port=6379/tcp --permanent

#重启防火墙
systemctl restart firewalld

使用windows下的客户端软件连接,发现客户端依然无法连接redis,这是由于redis本身安全机制的限制,默认只允许本机访问

1554277725357

15.7.2. 修改配置允许其它机器访问

  1. 默认redis只允许本机访问,如果想要其它机器访问,需要编辑redis.conf配置内容如下,添加当前Linux局域网的IP地址。
bind 127.0.0.1 192.168.248.99
  1. 关闭redis,再重新启动Redis读取新的配置文件,才会起作用
./redis-cli shutdown
./redis-server redis.conf
  1. 在Windows下使用Redis客户端访问Linux服务器上的Redis服务器

1554277770929

15.8. 安装小结

  1. 解压得到C语言源代码
  2. 编译并且安装到指定的目录下 /user/local
  3. 配置后台启动模式: redis.conf daemonize yes
  4. 防火墙开放6379端口
  5. 修改redis.conf配置文件添加当前主机的IP地址

16. Tomcat安装

16.1. 目标

在Linux上安装Tomcat

16.2. 安装Tomcat的步骤

1) 进入soft文件夹,解压Tomcat到/usr/local下

tar -xvf apache-tomcat-8.5.27.tar.gz  -C /usr/local/

2) 开放Linux的对外访问的端口8080

firewall-cmd --zone=public --add-port=8080/tcp --permanent

3) 重启防火墙

systemctl restart firewalld

4) 进入tomcat/bin目录,启动Tomcat

./startup.sh

1553600237063

5) 在Windows下打开浏览器访问Linux的8080端口

1553600267150

6) 进入bin目录下,关闭服务器。关闭服务器以后,浏览器不能再访问。

./shutdown.sh

1553600283881


16.3. 小结

Tomcat的安装有哪几步?

  1. 解压
  2. 添加8080端口号到防火墙中
  3. 启动bin startup.sh

17. 将项目发布到Linux

17.1. 目标

  1. 将项目发布到Linux

  2. MySQL底层编码的设置

17.2. 将下面的项目部署到linux下运行

1553600356285

17.3. Window系统mysql到出数据库脚本文件

1553600390295

17.4. Linux系统myql导入windows系统数据库导出的脚本文件

1) 连接Linux的MySQL,创建数据库day35,在数据库上右键,选择执行SQL语句,导入数据库文件

1553600408760


17.5. 将war包部署到tomcat上

1) 先在idea中day35_ajax项目打包,根据如下配置生成war包,指定为Archive打包类型。

1553600444807

2) 进行Build当前项目生成war包

1553600477652

3) 查看上面output输出目录

1553600499762

4) 修改名字为day35.war

1553600516719

5) 上传war文件到/usr/local/apache-tomcat-8.5.27/webapp目录下

1553600539302

6) 打开浏览器浏览网站

http://192.168.56.101:8080/day35/index.html

7) 执行效果

1553600560056


17.6. 修改mysql底层码表

17.6.1. 出现问题:

上面部署的项目发现搜索功能无效,这是由于mysql软件底层码表使用的不是utf-8导致执行sql语句中文乱码,最终导致无法查询的数据。

需要设置客户端和服务器端的编码为utf-8

17.6.2. 解决方法:

1) 修改mysql的配置文件

vim /etc/my.cnf

2) 在mysqld条目下增加以下配置,指定服务器的字符集为utf-8

[mysqld]
character-set-server=utf8

3) 增加客户端的默认字符集的配置,指定为utf-8,将下面的配置放到文件的结尾处

[client]
default-character-set=utf8

1553600626609

4) 文件保存退出后,重启mysql服务

systemctl restart mysqld

5) 重新搜索结果如下

1553600635822

17.7. 小结

  1. 发布项目到tomcat有哪几步

    1. 打包项目成war
    2. 将war文件复制到tomcat/webapps目录
    3. 复制数据库和表到linux中mysql
    4. 通过浏览器来访问
  2. 如何解决MySQL的编码问题

    修改mysql的配置文件:/etc/my.cnf文件

    添加服务器和客户端编码utf8

18. 用户管理:创建用户、设置密码、切换用户

18.1. 目标

  1. 创建用户

  2. 设置用户密码

  3. 不同用户之间的切换

18.2. 添加用户

18.2.1. 语法格式

useradd [参数] 用户名 创建一个用户
-m 创建用户的同时在/home下创建它的主目录
-g <组名> 创建用户的时候指定用户所在的组
未指定组名:默认与用户名相同
说明 创建好的用户信息在/etc/passwd文件中

18.2.2. 操作演示

  1. 进入/home目录,查看目录的内容
  2. 创建用户Jack,并且创建用户主目录
  3. 再次ll查看/home目录下存在Jack目录,默认用户Jack在一个叫Jack的组中。
  4. 创建用户Tom,把用户放在Jack这个组中,并且创建Tom主目录
  5. 通过ll查看/home目录下的信息
  6. 查看/etc/passwd文件,可以看到创建的用户信息

18.2.3. 执行结果

1553674003887

/etc/passwd文件内容

1553674029790


18.3. 设置密码

用户创建好以后没有密码,没有密码的用户是不能登录的。

18.3.1. 语法格式

passwd [用户名]
无参 给自己修改密码
用户名 管理员可以修改其它用户的密码

18.3.2. 操作演示

  1. 设置Jack的密码为abc123。如果提示无效的密码,忽略即可,再次输入同一个密码,修改成功。
  2. 在Linux控制台先logout登出。以Jack登录,注:用户名和密码大小写是敏感的

  3. 普通用户命令行前面的提示符是$,管理员命令提示符是#,用户主目录显示为~

18.3.3. 执行结果

1553674118909


18.4. 切换用户

18.4.1. 语法格式

su 用户账号 说明
作用 临时切换到指定的用户,如果是管理员切换到普通用户,不用输入密码
如果是普通用户切换到管理员必须输入管理员的密码

18.4.2. 操作演示

  1. 当前用户是root,临时切换成Jack,不用输入密码
  2. cd进入用户主目录,pwd显示当前的目录,观察前面的提示符
  3. 从Jack用户切换回root,需要输入密码。
  4. cd进入用户主目录,pwd显示当前的目录
  5. 输入2次exit再回到root用户

18.4.3. 执行结果

1553674186237

18.5. 小结

  1. 添加用户的命令是什么 useradd

  2. 设置密码的命令是什么 passwd

  3. 切换用户的命令是什么 su

19. 用户管理:删除用户、修改登录名字

19.1. 目标

  1. 删除用户

  2. 修改用户登录的名字

19.2. 删除用户

19.2.1. 语法格式

userdel [-r] [用户帐号] 删除指定的用户,前提是用户不在线
-r 删除用户的同时,将用户的主目录也删除

19.2.2. 操作演示

  1. 使用root删除用户Tom,同时删除Tom的主目录。如果Tom已经登录,则删除失败
  2. 在/home目录下已经找不到Tom主目录了

19.2.3. 执行结果

1553674298200


19.3. 修改登录名

19.3.1. 语法格式

usermod -l 新登录名 原登录名
作用 修改用户的信息
-l <新登录名> login 将用户登录名改成新的登录名

19.3.2. 操作演示

  1. 确认Jack这个用户不在线,如果在线需要将Jack登出
  2. 修改Jack的登录名为Rose
  3. 修改以后在Linux控制台,使用Rose重新登录

19.3.3. 执行结果

1553674380096

19.4. 小结

  1. 删除用户的名字 userdel

  2. 修改用户登录的名字 usermod

20. 组的管理:创建组、修改用户所在组、将用户从组中删除

20.1. 目标

  1. 创建一个组

  2. 修改用户所在的组

  3. 将用户从组中删除

20.2. 添加组

20.2.1. 语法格式

groupadd 组名
作用 创建一个组,组中没有成员。
说明 /etc/group文件,包含了所有创建组的信息

20.2.2. 操作演示

  1. 添加一个新的组America
  2. 查看/etc/group文件,做为主组的用户不会显示出来。

20.2.3. 执行结果

1553674497860

20.3. 修改用户所在组

一个用户只能有一个主组,可以有多个从组(附属组)。

20.3.1. 语法格式

usermod 参数 组名 用户名
-g<组名> 修改用户的主组
-G<组1,组2> 修改用户的从组

20.3.2. 操作演示

  1. 进入/home目录,ll显示home目录的内容可以看到Rose是属于Jack这个组
  2. 将Rose这个用户的主组Jack修改为America组
  3. 使用ll显示/home目录,查看Rose用户所属组名变成了America
  4. 创建两个组:China和Japan
  5. 将Rose添加进China和Japan两个从组中,组名之间使用逗号隔开。
  6. 查看/etc/group文件,查看到Rose与组的关系。文件中主组看不到用户的列表。

20.3.3. 执行结果

1553674569689 1553674576382

20.4. 将用户从组中删除

用户无法从主组中删除,只可以修改主组,可以从从组中删除用户。

20.4.1. 语法格式

gpasswd -d 用户名 组名
-d<用户名> 将用户从从组中删除

20.4.2. 操作演示

  1. 把Rose从America这个组中删除,删除失败。
  2. 把Rose从China这个组中删除
  3. 查看/etc/group文件,发现Rose已经从China组中删除

20.4.3. 执行结果

1553674644560

1553674649432

20.5. 小结

  1. 添加组 groupadd
  2. 修改用户所在组 usermod -g -G
  3. 将用户从组中删除 gpasswd -d

21. 组的管理:修改组名字,删除组,使用sudo权限

21.1. 目标

  1. 修改组的名字

  2. 删除组

  3. 临时使用管理员命令

21.2. 修改组的名字

21.2.1. 语法格式

groupmod -n 新组名 原组名
-n <新组名> 将一个组的名字修改成另一个名字

21.2.2. 操作演示

  1. 在/home目录下ll查看修改前的信息
  2. 将Rose的主组名America改成USA
  3. 查看/home目录信息,发现Rose的组名已经改成USA

21.2.3. 执行结果

1553674741115

21.3. 删除组

删除的组的前提是:没有用户把它做为主组,如果要删除主组,则必须先删除这些用户后或将用户移动到其他主组中,才能删除主组。

21.3.1. 语法格式

groupdel 组名
作用 删除一个组

21.3.2. 操作演示

  1. 删除USA组,删除失败,因为还有Rose把它做为主组
  2. 删除Japan这个组
  3. 删除China这个组
  4. 查看/etc/group文件,发现没有这两个组的信息了

21.3.3. 执行结果

1553674787514

21.4. 设置sudo权限

普通用户临时操作管理员的命令,设置sudo权限

21.4.1. 普通用户没有权限的演示

  1. 使用su切换用户到Rose,进入自己的用户目录
  2. 在主目录下创建一个文件rose.txt,可以创建成功。
  3. 添加一个用户Mary,发现创建失败。
  4. 退出Rose用户,返回到root 用户

21.4.2. 执行结果

1553674824780

21.4.3. sudo权限的说明

Rose是普通用户,可以使用基本的命令,如:创建文件等操作,但不能执行系统级别的指令。

21.4.4. 语法格式

sudo 系统命令 普通用户执行管理员命令
作用 使用命令的前提:必须先给用户权限

21.4.5. 设置普通用户sudo权限的步骤

1) 编辑/etc/sudoers文件,在root ALL=(ALL) ALL下复制一行(92行),将用户名改成Rose,因为是只读的文件,所以要强制保存退出 :wq!

Rose ALL=(ALL) ALL

2) 切换回Rose用户,进入/home目录。ll查看目录下目前的状态。

3) 使用sudo命令添加一个用户Mary,这时需要输入Rose的密码才能操作成功。

sudo useradd  -m  Mary

4) 进入/home查看已经创建Mary用户和它的主目录

5) 退回Rose,回到管理员root的账户

21.4.6. 执行结果

1553674930825

21.5. 小结

  1. 修改组的名字 groupmod
  2. 删除组 groupdel
  3. 执行管理员权限的命令 sudo

22. 学习总结

  1. 能够使用Linux中的网络管理命令
命令 作用
hostname 显示主机名
hostnamectl set-hostname 新主机名 永久修改主机名
systemctl start network 开启网络服务
systemctl stop network 停止网络服务
systemctl restart network 重启网络服务
systemctl status network 显示网络服务状态
  1. 能够使用Linux中SSH免密登录命令
命令 作用
ssh 服务器地址 登录
ssh-keygen 生成一对公钥和私钥
ssh-copy-id 服务器地址 将公钥复制到服务器
  1. 能够使用Linux中基本用户管理命令
命令 作用
useradd 添加用户
passwd 设置密码
userdel 删除用户
usermod 修改用户:登录名字,所在组
groupadd 添加组
gpasswd 将用户从组删除
groupmod 修改组名字
groupdel 删除组
su 切换用户
sudo 执行管理员的命令
  1. 能够使用Linux中防火墙配置命令
命令 作用
systemctl start firewalld 开启防火墙
systemctl stop firewalld 关闭防火墙
systemctl enable firewalld 开启自启动防火墙
systemctl disable firewalld 关闭开机启动防火墙
systemctl status firewalld 查看防火墙的状态
firewall-cmd --add-port=端口号/tcp --permanent
--list-all 显示所有已经添加的端口号 --remove-port=端口号/tcp
  1. 能够在Linux系统中安装jdk软件
  2. 能够在Linux系统中安装mysql软件
  3. 能够在Linux系统中安装tomcat软件
  4. 能够在linux系统中安装redis软件
  5. 能够在Linux系统的tomcat中部署发布项目

results matching ""

    No results matching ""