Linux命令汇总 | vim | shell | 进阶【2022版】_步尔斯特的博客-CSDN博客
一 相关命令
- tab:自动补全
- vi和vim的使用
- vi:创建、查看、编辑文本。如vi test.txt,如果存在此文件就创建并打开,如果存在就打开。
- vim:创建、查看、编辑文本。如vi test.txt,如果存在此文件就创建并打开,如果存在就打开。
- 文件目录指令
- pwd:查看当前所在目录
pwd - ls [选项] [指定目录]:查看指定目录下所有的子目录和文件列表
ls:仅罗列出当前文件名或目录名 就像Windows里的文件列表。
ll:列出当前文件或目录的详细信息,含有时间、读写权限、大小、时间等信息 ,像Windows显示的详细信息。ll是“ls -l"的别名。相当于Windows里的快捷方式。可以理解为 ll 和 ls -l 的功能是相同的, ll 是 ls -l 的别名。
ls /home
ls查看当前目录下所有的子目录和文件列表
ls -1 /home :以列表形式显示
ls -a /home:显示指定目录下所有的子目录和文件(包括虛拟的目录)
ls -al /home:以列表形式显示指定 目录下所有的子目录和文件(包括虛拟的目录) - cd 目录名:切换目录
cd /:进入linux的根目录。
cd ..:返回上一级目录。
|->绝对目录:以盘符开始的目录叫绝对目录,从盘符开始查找目标目录
cd /opt/testDir
~:当前用户的根目录。在任何目录下执行:cd ~,进入当前用户的根目录。
|->相对目录: 以目录名开始的目录叫相对目录,从当前目录开始查找目标目录
cd testDir
..:当前目录的上一级目录,从的当前目录开始查找它的上一级目录。
.:当前目录
XXx.sh====>./xxx.sh - mkdir [选项] 目录名:创建目录
|->绝对目录
|->相对目录
mkdir /opt/testDir/test1 //在/opt/testDir目 录下创建一个 目录test1 (使用绝对目录)
mkdir test2 //在/opt/testDir目录下创建一个目录test2 (使用相对目录)
mkdir -p /opt/testDir/test3/test4 //在/opt/testDir 目录下创建目录test3,并且在test3下创建test4(一次创建多级目录)
mkdir -P test5/test6 - rmdir 目录名:删除一个空目录
rmdir test1
rmdir test3 - touch 文件名列表(文件名之间用空格隔开):创建一个或者多个空文件
touch t1. txt
touch t2.txt t3.txt t4. txt - cp [选项] source (源) dest(目标):复制文件或者目录:
cp t1.txt test2 //把t1. txt文件复制到test2目录中
cp -r test2 test5 //把test2目录复制到test5目录中(递归地复制目录)
cp t1.txt test2 - rm [选项] 文件名或者目录名:删除文件或者目录
rm t1. txt 提示删除文件
rm -f t2.txt 强制删除文件
rm -r test2 提示递归删除目录
rm -rf test5 强制递归删除目录 - mv source(源) dest(目标):移动目录或者文件
mv test.txt test1
mv testl test2
mv t3.txt t3_ new. txt文件重命名 - cat 文件名:查看文件内容
文件内容一次性显示出来。
cat t4. txt
cat -nt4. txt 显示行号 - more 文件名:分页查看文件文件内容,一次性加载文件所有内容到内存,分页显示
按回车翻一行、按空格翻一页
more t4. txt - less 文件名 :分页查看文件文件内容,分页加载文件所有内容到内存,分页显示
less t4. txt
按回车翻一行、按空格翻一页, 按q退出查看 - head [选项] 文件名:查看文件的头10行
head t4. txt
head -n 5 t4. txt - tail [选项] 文件名:查看文件的后10行
tail t4. txt
tail -n 5 t4. txt - echo:输出系统变量或者常量的值到命令行终端。
echo $JAVA HOME
echo $PATH
echo Hello World!
JAVA_ HOME=D: \DPFS\Java\jdk1.8.0_ 101
PATH= 8JAVA HOME&\bin; . ......
CLASSPATH=8JAVA_ HOME&\lib; . - 查看命令 > 文件名:把前一个查看命令的结果输出到指定的文件中
*如果目标文件不存在,则新建一个文件
*如果目标文件已存在,则把文件以前的内容覆盖
ls > ret.txt
ls -al > ret. txt
cat ret.txt > t3_ _new.txt 文件内容的复制
cat t4.txt > t3_ new. Txt - 查看命令 >> 文件名:把前一个查看命令的结果追加输出到指定的文件中
*如果目标文件不存在,则新建一个文件
*如果目标文件已存在,则在文件原来内容的基础上进行追加
ls > ret.txt
ls -al >> ret. txt
cat t4.txt >> ret. txt
- pwd:查看当前所在目录
- 搜索文件或者目录的命令:
- find [搜索范围] [搜索标准]关键字
|->- name: 默认按名称搜索(文件或者目录所在的路径也在搜索范围之内)
|->-size: 按文件大小搜索
|->- -user: 按文件的所有者搜索
find *.txt 搜索当前目录下, 所有的. txt文件.
find *e* 搜索当前目录 下,所有名称中包含e的那些文件或者目录
find /etc *.txt 搜索/etc目 录下所有.txt文件
find /etc -size -5k 搜索/etc目录下所有小于5k的文件
find /etc -user zhangsan 搜索 /etc目录下所有的所有者是zhangsan的文件和目录 - locate:在整棵目录树中搜索文件或者目录,都是根据名称搜索,效率高。
数据库里保存的linux目录树中查找,所以查找效率高
updatedb 因为目录树的更新策略并不是实时,所以存在不及时的情况
locate 关键字
updatedb
locate *.txt - 搜索过滤命令,在前一个搜索命令的结果中进行按名称或内容进一步过滤: 搜索命令Igrep [选项] 过滤条件
查看命令Igrep [选项] 过滤条件
find *.txt Igrep new 搜素当前目录下,所有名称包含new的.txt文件
find /etc -size -5k Igrep firefox
cat t1. txt Igrep beij ing
cat t1.txt Igrep -ni beijing n表示显示行号,i表示忽略大小写
ls -alIgrep new
- find [搜索范围] [搜索标准]关键字
- 压缩和解压的命令:
- gzip、gunzip:压缩或者解压单个文件
gzip 文件名:压缩单个文件,生成一个.gz的压缩包,并且会把原来的文件删除。
gunzip xxx.gz压缩包名:解压.gz压缩包,并且会把原来的.gz压缩包删除。
gzip ret. txt
gunzip ret.txt.gz - zip、unzip:压缩(打包)或者解压多个文件和目录:
zip 目标压缩包名称(通常使用.zip压缩包) 文件或者目录列表
unzip 压缩包名(.zip) -d 解压目录名:将指定的. zip压缩包解压到当前目录(或者指定目录)。
zip test.zip ret.txt t1.txt test2
unzip test.zip -d test3
zip mytest.zip test.zip t3_ new.txt t4.txt test2 - tar:压缩(打包)或者解压多个文件和目录
tar [选项] 目标压缩包名称(xxx.tar.gz) 文件或者目录列表
|->c: 打包或者压缩
tar [选项]压缩包名(xxx.tar.gz) -C解压目录名:将指定的. tar.gz压缩包解压到当期目录(或者指定目录)
|->z:解压
tar -zcvf xxx.tar.gz 文件或者目录列表
tar -zxvf xxx.tar.gz -C 解压目录名
tar -zcvf mytar.tar.gz mytest.zip ret.txt t1.txt test2
tar -zxvf mytar.tar.gz -C /opt/testDir/test5
- gzip、gunzip:压缩或者解压单个文件
- 日期和时间的操作命令:
- 查看或者设置系统的日期或者时间:date
date 查看系统当前的完整的日期和时间
date +%Y系统当前的年份
date +%m 系统当前的月份
date +%d 系统当前的日期
date '+%Y-%m-%d %H:%M:%S' 按yyyy-MM-dd HH :mm: ss格式显示
date -S '2020-10-20 10:20:30' 设置当前的系统时间 - 查看系统日历: cal
cal:查看当前月份的日历|
cal 2020: 查看指定年份的日历
- 查看或者设置系统的日期或者时间:date
- Linux用户管理
- useradd 用户名称:添加名称为xxx的账号
- passwd 用户名称:修改用户密码
- userdel 用户名称:删除用户;userdel -r lisi:删除用户的同时级联删除它的主目录;
- id 用户名称:查看用户信息,如id zhangsan;
- su 用户名:切换用户;
- Linux组管理
- groupadd 组名:添加组,如groupadd dev
- groupdel 组名:删除组,如groupdel dev
- gpasswd -a 用户名 组名:把用户添加到组中,如gpasswd -a zhangsan dev
- gpasswd -d 用户名 组名:把用户从组中移除,如gpasswd -d zhangsan dev
- useradd -g 组名 用户名:添加用户时,指定所属的组(主组),如useradd -g dev lisi
- 文件或者目录与组:
- 文件或者目录与组基本介绍:
主组:创建用户的时候指定的组,不能修改。
附加组:用户可以随意CRUD附加组。
在linux中,每一个用户都至少属于一个组,用户不能独立于组存在,一个用户可以属于多个组。
在linux中,每一个文件或者目录必须属于一个组,而且只能属于一个组,默认情况下,文件所有者所属的主组就是文件所属的组; .
文件或者目录通过组来控制哪些用户可以对它进行哪些操作,即文件或者目录的访问权限;
在文件或者目录看来,linux 系统中所有的用户分为三类:
所有者:默认情况下,文件或者目录的所有者都是创建者,可以修改
同组用户:跟文件或者目录属于同一个组的用户
其它组用户:既不是文件或者目录的所有者,也不是同组用户 - 查看文件的所有者和所在的组:
ls -1 - 修改文件的所有者或/和者组:
chown 新的所有者文件名;
chown 新的所有者:新的组文件名;
chown zhangsan t1. txt
chown -R zhangsan test3
chown zhangsan:dev t4. txt
chown zhangsan:dev test2
chown -R zhangsan:dev test2 递归修改目录的所有者和所在的组 - 修改文件或者目录的所在组: chgrp新的组 文件名或者目录名
chgrp dev t2. txt
chgrp -R dev test3
- 文件或者目录与组基本介绍:
-
文件或者目录的权限管理:
-
准备工作:
一个用户至少属于一个组,也可以属于多个组;
一个文件或者目录必须属于一个,并且只能属于一个组;
在一个文件或者目录看来,linux系统中所有的用户可以分为三类:
所有者:默认情况下,文件或者目录的所有者都是创建者,可以修改
同组用户:跟文件或者目录属于同一个组的用户
其它组用户:既不是文件或者目录的所有者,也不是同组用户
注意:
(1)新创建文件或目录,默认属于创建者所属于的组。
(2)linux中对文件和目录的权限控制方面,root(超级管理员)在和普通用户没有任何区别,即root没有任何特殊权限。
(3)文件和目录的压缩、解压的权限,其实就是写的权限。
(4)解压后,文件和目录的所有者都会变成解压者。 -
文件或者目录的三种权限:
在linux中, 任何文件或者目录都有三种权限:读(Read)、写(Write)、执行(Execute)
对于文件而言:
读:可以读取、查看文件的内容,比如: cat、 more、 less、 head、 tail等。
写:可以修改文件的内容,比如:改权限、vi 、vim、压缩、解压等
执行:如果该文件是可执行文件(.sh),可以直接运行,比如: . /xxx.sh.
对于目录而言:
读:可以读取、查看目录下边的内容,比如: 1s等
写:可以修改目录中的内容,改权限、创建子目录、删除子目录、创建文件、删除文件、重名文件或者目录、压缩、解压
执行:可以进入该目录,比如: cd等。 -
文件或者目录的权限控制:
在linux中,任何一个文件或者目录都有三部分权限:所有者权限、同组用户权限、其它组用户权限:
第一部分权限:所有者权限,文件或者目录的所有者对该文件所拥有的权限,使用r、w、x分表表示读、写、执行的权限。比如: rwx: 拥有读写执行的权限,r-x: 拥有读和执行的权限,r--: 只拥有读的权限,---: 没有任何权限。
第二部分权限:同组用户权限,文件或者目录的同组用户对该文件所拥有的权限,使用r、w x分表表示读、写、执行的权限。
第三部分权限:其它组用户权限,文件或者目录的其它组用户对该文件所拥有的权限,使用r、W、x分表表示读、写、执行的权限。 -
查看文件或者目录的权限:
ls -aul a:表示所有;u表示人性化;l表示详细信息; -
修改文件或者目录的权限: chmod
用r、w、x分辨表示读、写、执行的权限;
用u、g、o、a分别表示给所有者、同组用户、其它组用户、所有用户修改权限;
用+、-、=分别表示给指定的用户增加、减少、设置对应的权限
chmod g-W, O+W t5. txt
chmod g=rwX t5.txt
chmod a-r t5. txt -
使用数字的方式修改文件或者目录的权限:
每一个权限可以用一个数字来表示:
r、w、x
4、2、1
每一个文件或者目录都有三部分权限,每一部分权限都可以用一组数据之和来表示,三部分权限就是一组三个数据序列:
rw- r-x r-x
6 5 5rwxr-x-wx
753
rwxrwxrwx
777chmod 777 t5.txt
chmod 753 t5.txt
-
- linux中的网络管理:
ifconfig:查询ip地址,inet xxxx.xxxx.xxxx.xxxx
在linux的配置文件: vi /etc/sysconfig/network- scripts/ifcfg-ens33
BOOTPROTO="static" 表示:静态ip,每次启动都使用配置文件中配置的ip
ONBOOT= "yes" 表示:每次启动都要求linux系统去加载配置文件中配置的ip数据
IPADDR= 192.168.11.128
GATEWAY=192.168.11.2
DNS=192.168.11.2 说明:DNS的值和网关保持一致
重启linux:reboot - 进程和服务管理:
进程管理:
线程: 一个程序的线路
进程: 一个程序的执行,一个进程占用一个端口。
查看正在运行的进程:ps
ps //只会显示(用户)应用进程
ps -e //显示所有进程(用户与系统级)
ps -ef //以全格式的形式显示所有进程
ps -ef|grep mysql //用于查看linux系统中某一-些软件或者应用是否处于启动状态
关闭进程:
使用ps命令查看进程的PID
使用命令kill -9 PID服务管理:
1)、服务介绍:服务是支持Linux运行的一-些必要程序,本质上也是进程,叫守护进程。
2)、操作服务:systemctl [start|stop|restart|reload|status|enable]服务名称.
systemctl status firewalld 查看 防火墙运行状态
systemctl stop firewalld 关闭防火墙
systemctl start firetalld 开启防火墙1
systemctl enable firewalld 设置防火墙开机启动
*老版的linux或者有些发行版本的linux,操作服务使用service命令。 - linux中软件包的管理:软件安装包
- RPM包管理:
- RPM:一种linux的软件包的打包和安装工具软件,操作的软件包都是. rpm结尾。
- RPM软件包来源:
官网下载、linux自带常用的:/run/media/pshengbo/CentOS 7 x86_64/Packages - 使用RPM:rpm命令。
查看当前系统中已经安装的rpm软件包: rpm -qalgrep firefox
卸载rpm软件包: rpm -e firefox
安装rpm包:rpm -ivh XXX. rpm
cp firefox-45.4.0-1.e17.centos.x86_64.rpm /opt
rpm -ivh firefox-45.4.0-1.e17.centos.x86_64. rpm
- YUM包管理:是一种基于RPM的软件包管理工具,它能够从指定服务器上自动下载RPM包并且自动安装,可以自动处理软件包之间的依赖关系。
- 查看当前系统中已经安装的rpm软件包:yum list installed|grep firefox
- 卸载rpm软件包:yum remove firefox.x86_64
- 安装rpm包:yum install firefox
- RPM包管理:
- linux中的帮助命令
- man 命令:用来查看linux系统手册上的帮助信息,如man ls;分屏显示、按回车翻一行、按空格翻一页、按q退出查看。
- help 命令:用来查看命名的内置帮助信息,如help cd
-
Linux的系统操作
-
shutdown now: 立刻进行关机
-
shudown -h 1: 1小时后会关机了
-
shutdown –r now: 现在重新启动计算机
-
reboot: 现在重新启动计算机
-
sync: 把内存的数据同步到磁盘.
-
- clear:清屏
二 脚本
三 需求调研、需求分析(即应用场景)
- linux的比windows好的地方:
- linux是一种开源的、免费的操作系统。你可以研究它的源码,或者可以在它的基础之上开发出私人定制的操作系统都可以。而我们平时用的windows,正规来说是收费的,而且它的源代码都是商业机密,我们不可能看得到。但也不仅仅是开源、免费我们才用linux,它还有很多windows不具备的优点......
- linux在性能和技术比windows好:
- linux注重安全性。linux比较注重整个系统的安全性,它的安全性比windows要好。后面会讲到linux的一些安全机制,特别是linux对于权限的管理是非常严格的,linux中对于每一个文件夹、第一个文件都赋予一个明确的权限。也就是不同的人,能够在linux操作系统上能够新建文件夹、能够在哪个文件夹上新建哪种类型的文件、能够查看到什么、能够修改到什么的文件夹和文件都是不一样的。
- linux注重稳定性。如果同一款软件分别安装在linux和windows上面,windows上这款软件经常会出现一些卡顿的情况,linux上这款软件相对会运行得比较平稳,很少出现卡顿的情况。
- linux注重高并发处理能力。比如同时来很多的请求来操作linux,linux的处理能力比windows做得要好。比如将来我们的web应用程序开发好以后肯定要部署在服务器上的,服务器上面肯定要安装操作系统吧。如果你安装的是linux,大家都来访问你的linux,都来访问你安装在linux上的开发好的web应用程序,都向你的web应用程序发请求。这时,不管是谁发过来的请求,总之操作系统会先感受到这种请求。如果大量的请求发过来,操作系统也需要一个反应的时间。意思就是说面对大量的请求(高并发)发过来,linux的处理能力、反应能力和效率会比windows要好一些。
- linux的缺点:
- linux没有优异的可视人界面。linux也有可视化界面,但没有windows的好。总的来说,linux牺牲了可视化界面提升了性能。那linux的可视化界面是什么样的呢?就像我们的cmd一样,黑乎乎的,各种命令行。比如你想看某个目录下的文件,我们要执行命令。比如我们想创建目录,我们得用命令来创建。所以说,windows常用于个人计算机上,linux常用于企业服务器上
四 设计思想
- linux是一种操作系统, 安装在计算机硬件上、用来管理计算机的硬件和软件资源的系统软件。即操作系统安装在硬件上,除了能够管理硬件外,它还能管理软件。
linux既然是一种操作系统,那么linux就跟传统的、大家常用的操作系统没什么两样,我们平时用的操作系统都是windows操作系统(如window xp、window 7、window10)。大家买电脑回来,如果没有安装操作系统,你的电脑就还不能用。也就是说一台电脑,如果没有安装操作系统,都是用不了的。安装上操作系统以后,你的电脑才能使用。
那操作系统是什么呢?只要是操作系统,都是用来安装在计算机硬件上的。安装在计算机硬件上干什么?操作系统安装在计算机上后,能够管理我们计算机(电脑)上的硬件。你买回来的计算机硬件都有什么?有cpu、内存、磁盘、硬盘、声卡、网卡、屏幕、键盘等,我们说操作系统可以安装在这些硬件上,来管理这些计算机硬件。
操作系统除了安装在硬件上,能够管理硬件外,它还能管理软件。如果你在计算机上装一些软件(QQ、微信等),操作系统也都能够帮你管理这些软件。
操作系统本身就是一种软件,它是一种系统软件。linux是一种操作系统, 安装在计算机硬件上、用来管理计算机的硬件和软件资源的系统软件。像我们常用的windows就是这样,你安装上windows操作系统以后,你计算机上的硬件和软件才能运行起来。如果你的计算机不安装操作系统,你的计算机就是一堆废铜烂铁。
其实linux和windows一样,你随便买一台计算机回来安装上linux以后,也可以帮你把计算机运行起来,即也能够管理你的硬件和软件资源。
五 体系的组织结构设计(重要组件、模块划分、模块间交互)
六 工作原理、运行流程
七 详细设计:实现方法(技术)
八 使用说明:常用配置
1、jdk安装与配置(免安装版)
第一步:先将软件通过xftp5 上传到/opt 下
第二步:解压缩到/opt目录下
第三步:配置环境变量的配置文件vim /etc/profile
JAVA_HOME=/opt/jdk1.7.0_79
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/lib:.
export JAVA_HOME PATH CLASSPATH
d说明:
classpath用于设置操作系统搜索.class字节码文件的路径。这里为什么要加一个点(“.”)?因为在操作系统中使用javac xxx.class时,都是在当前目录下去搜索.class字节码文件的,这里的点(“.”)表示的就是当前目录下。
设置完3个环境变量以后,使用export把它们导进来。
第四步:使配置文件生效
d说明:即让linux重新加载这个配置文件
第五步:测试安装成功
第六步:在目录/home/zhangsan下编写HelloWorld.java编译并运行
2、tomcat的安装与配置(免安装版)
第一步:先将软件通过xftp5 上传到/opt 下
第二步:解压到/opt
第三步:启动tomcat( ./startup.sh)
第四步:Linux上访问tomcat
第五步:windows上访问tomcat
注意:从其它机器上访问需要关闭linux的防火墙。systemctl stop firewalld
3、安装mysql
第一步:查看是否已经安装了mariadb
d说明:mysql数据库也是开源的,开源的意思是大家可以在mysql数据库的源代码上进行二次开发定制(自定义)自己的数据库,因此在市面上也有很多不同版本的mysql数据库,这跟linux一样有很多不同的版本。
而这里的mariadb数据库,就是mysql数据库的一个分支。很多版本的linux在安装好了以后,都会自带mariadb数据库。如果在这种情况下安装mysql数据库,是安装不上的。那我们为什么不直接使用mariadb数据库呢?因为mariadb数据库有它自己专门的用途,对于我们平时使用的一些mysql功能它反而没有。
所以如果要安装mysql数据库,首先得把原来的mariadb数据库给卸载掉。
检查linux是否安装了mariadb数据库,mariadb数据库是mysql的分支。是免费开源的。mariadb和msyql会有冲突。首先要检查安装了mariadb, 卸载掉。
检查命令:yum list installed | grep mariadb
卸载命令:yum –y remove xxxx
*如果卸载不成功,需要去掉参数-y,手动确认卸载。
第二步:上传mysql安装包到/opt下
第三步:解压mysql安装包到目录/opt
第四步:修改解压后的根目录名
第五步:创建数据文件夹data
d说明:mysql以后会用来存在很多数据如表数据、视图数据、索引数据等,而在mysql底层表明数据其实是存放在文件里面的,在这里我们指定把这些数据文件统一存放在data文件夹中。
其实这个data文件夹的名称是自定义的,一般情况下文件名称是data而已。
data文件夹是mysql用来存放数据库文件的,数据库的表数据都放在data目录。
默认没有data目录,可以手工创建data目录,在mysql-5.7.18文件夹目录下创建一个data文件夹。
第六步:创建用来执行mysqld命令的Linux用户
d说明:因为以后我们要在linux中启动或者关闭mysql数据库服务,即要执行启动或关闭mysql数据库服务的命令,linux建议要有一个专门的账号去执行。
创建mysql用户,用来执行MySQL的命令mysqld ,此命令用来初始化msyql基础信息。可以使用其他用户,例如叫做 mydb.等,但不推荐。
第七步:初始化mysql
d说明:使用mysql的 mysqld 命令初始化数据库的基本信息,就是告诉mysql:
- 把数据文件放到刚才我们创建的data目录中。
- Mysql数据库的根目录在哪里
- 将来使用哪个账号去执行mysqld命令
注意:要在/opt/mysql-5.7.18/bin执行以后的mysqld命令
使用mysql的 mysqld 命令初始化数据库的基本信息。切换到mysql-5.7.18/bin目录下执行。
命令:./mysqld --initialize --user=mysql --datadir=/opt/mysql-5.7.18/data --basedir=/opt/mysql-5.7.18
d说明:执行完这个mysqld命令,其实mysql已经安装完成,后面的工作只是对mysql的一些配置而已。
参数说明:
--initialize 初始化mysql,创建mysql的root, 随机生成密码。记住密码,登录msyql使用。
--user执行msyqld 命令的linux用户名
--datadir : mysql数据文件的存放位置,目录位置参照本机的设置。
--basedir : msyql安装程序的目录,目录位置参照本机的设置。
该命令执行后,会生成一个临时的mysql数据库root用户的密码,请先拷贝出来记住,后续第一次登录mysql需要使用
密码:iGT#A:CfF7i(
第八步:启用安全功能
d说明:将来mysql会被看成一个存储数据的服务器,而我们会使用mysql客户端去连接mysql服务器,然后向mysql服务器发送sql语句,并从mysql服务器接受sql语句执行的结果。
而在mysql服务器与客户机之间来回传输的数据的时候,可对对数据进行加密。通过证书提供了身份验证机制进行数据的加密,我们不需要知道加密的原理,我们只需要启用这个加密功能就可以了。为什么要对数据进行加密呢?因为如果不使用数据加密算法,那么在mysql服务器和客户机之间传输数据的时候将采用明文传输,如果被黑客截取数据(如用户名和密码信息)那么就相当严重了。
这种安全功能是基于加密算法的,启用了安全功能以后数据的加解密是自动进行的,我们不需要管。
因此一般都会启用安全功能,在mysql安装根目录的bin目录下执:./mysql_ssl_rsa_setup --datadir=/opt/mysql-5.7.18/data,这里的xxx/xxx/data指明了要对mysql的所有数据文件中的数据的传输都启用安全加密功能。最后会生成一个加密证书,这个证书对我们也没有用,是mysql服务器和客户端自己会用的。
在服务器与客户机之间来回传输的所有数据进行加密。通过证书提供了身份验证机制,mysql命令程序mysql_ssl_rsa_setup提供了开启数据加密功能,生成数字证书。
在mysql-5.7.18/bin目录下执行命令:
./mysql_ssl_rsa_setup --datadir=/opt/mysql-5.7.18/data
第九步:修改mysql安装目录权限
mysql安装后,需要更改mysql-5.7.18整个文件夹目录权限,更改所属的用户和组为之前创建的mysql用户及其所在组。在mysql安装目录的上级(/opt)位置,执行命令chown .
例如:chown -R mysql:mysql /opt/mysql-5.7.18/
chmod 777 /opt/mysql-5.7.18/
第十步:启动mysql
d说明:
如果是前台启动,那么mysql的启动就会占用整个当前终端命令行,为以后打印mysql的日志。但这样做的缺点就是,我们不能控制当前终端命令窗口行了,即不能在当前命令行窗口去执行别的命令了。因此我们一般选择在后台启动mysql,不去占用当前的终端命令行容器。当然,你可以选择打开两个命令行终端窗口。
注意前台启动,第一个:会占用整个命令行终端。第二个:把当前命令窗口关闭以后,这个mysql服务就会关闭了。而使用后台启动时,第一个:不会占用整个命令行终端;第二个:如果要关闭mysql服务,必须要使用命令关闭。
启动MySQL服务,mysql-5.7.18/bin目录下执行命令:./mysqld_safe &(其中&符号表示后台启动),输入命令后按Enter。
确认msyql是否启动,查看进程 ,使用ps -ef | grep mysql
第十一步:客户端登录mysql
登录进入mysql,mysql-5.7.18/bin目录下执行命令:./mysql -uroot -p
-u表示使用root用户登录系统,使用第7步生成的密码。
-p表示使用密码登录
第十二步:修改root密码
第8步的root用户密码是临时密码,要修改才能使用。
执行sql语句 show databases; 第一次使用将会提示修改mysql的root用户密码:
修改mysql的密码,命令语法:alter user '用户名'@'主机域名或ip' identified by '新密码'
例如:alter user 'root'@'localhost' identified by 'yf123';
第十三步:授权远程访问
授权远程访问,在没有授权之前只能在本机访问msyql,远程授权就是让其他计算机通过网络访问mysql(这样远程客户端才能访问)。
授权命令:grant
语法:grant all privileges on *.* to root@'%' identified by 'yf123';
参数:
其中*.* 的第一个*表示所有数据库名,第二个*表示所有的数据库表;
root@'%' 中的root表示用户名,%表示ip地址,%也可以指定具体的ip地址,比如root@localhost,root@192.168.235.130等。
执行授权命令:grant all privileges on *.* to root@'%' identified by 'yf123';
更新权限信息,执行flush刷新权限: flush privileges;
关闭防火墙:systemctl stop firewalld
远程连接数据库:
第十四步:关闭mysql服务
d说明:
使用kill命令暴力关闭也可以,但可以会造成数据的丢失。因为有些数据还存在于内存中没有同步到数据,如果使用kill命令暴力关闭mysql,可能就会造成没有完成同步的数据的丢失。
关闭mysql客户端终端:exit / quit
mysql-5.7.18/bin目录下执行:./mysqladmin -uroot -p shutdown输入密码关闭
查看mysql进程,已经没有mysqld_safe
第十五步:修改数据库编码
查看数据库编码:show variables where Variable_name like '%char%';
修改mysql的字符集:在mysql客户端执行如下命令
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_database=utf8;
set character_set_results=utf8;
set character_set_server=utf8;
set character_set_system=utf8;
set collation_connection=utf8;
set collation_database=utf8;
set collation_server=utf8;