Linux深度命令
  ZT8lPCn7HRRr 2023年11月19日 23 0

03_文件与目录管理.png

第一章 Linux命令

一、简介

Linux是一类Unix计算机操作系统的统称。Linux操作系统也是自由软件开放源代码发展中最著名的例子。在1991 年的十月,由一个名为 [Linus Torvalds](https://baike.baidu.com/item/Linus Torvalds)的年轻芬兰大学生带头开发的作业系统。

二、特点

开放性,多用户,多任务,优异的性能和稳定性

三、安装

参考文档 镜像下载https://wiki.centos.org/Download 一般是非盈利社区

四、目录结构

image-20200907090126990

/ 最顶级目录,所有的东西都在/目录下
bin 可执行文件,可以被root和一般用户使用的指令,也就是常用命令
dev 外接设备
etc 配置文件
home 普通用户家目录  非root用户
lib 二进制文件,如支持命令的库
mnt 挂载文件系统的目录
proc 存放一些执行的进程的信息
root 超级用户的家目录 ~
sbin 超级用户使用的命令
tmp 临时文件存放目录
usr 用户程序命令
var 存放日志或数据文件

五、基础命令

标准格式: 命令 [参数] [操作对象]

01.ls

显示当前目录所有文件(和文件夹)简单信息 举例:ls (其后面也可以加路径,例如:ls /test/aaa) -l 显示详细信息 -a 显示所有文件,包括隐藏文件 -alh 显示文件大小 不分先后顺序 相对路径: 根据参照物确定路径,一般为当前目录(.或./代表当前目录 ../代表上一级目录 ~代表家目录) 绝对路径: 直接从顶级目录开始,比如/

02.ll

显示所有文件(和文件夹)详细信息 举例:ll 路径名 例如:

ll /test/aaa

如果ll后面不加路径就代表查看当前目录 显示出来的东西如果以-开头,说明它是文件 如果以d开头,说明它是目录,文件夹 -h 显示文件的大小 -a 显示隐藏文件

03.cd

进入到某个目录 举例

cd /

返回上一级目录

cd ..

04.pwd

显示路径(绝对路径)

05.mkdir

创建目录 举例:

mkdir aaa

-p 创建多级目录

06.rmdir

删除空目录 举例

rmdir aaa

07.touch

创建空文件 举例:touch aaa.txt(touch 后面也可以跟路径,如:touch /test/aaa.txt) 创建多个文件

	touch a.txt b.txt

08.cp

复制 cp复制文件 举例:

cp aaa.txt bbb.txt
cp -r 复制目录

09.mv

移动文件或目录(也是重命名) 举例:

mv /test/aaa/a.txt /test/bbb (把/test/aaa/a.txt移动到/test/bbb) 
mv /test/aaa/a.txt /test/aaa/b.txt(重命名)

10.rm

删除 (不提示删除 rm -rf) (rm -r 递归删除) 举例:

rm -rf a.txt
删除多个:
rm -rf a.txt b.txt

11.vi/vim

编辑文本 例如:

vim /test/a.txt

输入i进行编辑 编辑完先按Esc,取消insert

命令 说明
:w 保存
:wq 保存并退出
:x 保存并退出
:q 退出,如果有改动,需要使用强制退出
:q! 强制退出,对修改的内容不保存
:set nu 显示行号
:n 跳到第n行
:%s/o/xxxxxx/g 把文件中的o替换为xxxxxx
/xxx /xxx 查找xxx 输入n查找下一个,输入N查找上一个
G 跳到文件最后一行
gg 跳到文件第一行
$ 跳到本行末尾
^ 跳到本行行首
yy 复制,5yy复制5行
P 粘贴
dd 删除1行,10dd删除10行
U 撤销
w 光标每个单词跳动

vim是vi的加强版

12.>和>>

	输出重定向

覆盖输出

追加输出

13.cat

查看文件内容 举例:

cat /test/aaa.txt

查看多个文件 cat a.txt b.txt

14.head

查看文件前n行内容 举例:

head -10 /test/test01/bbb.txt

-10代表前10行

15.less

	分页查看
空格显示下一行

可以使用【pageup】和【pagedown】键进行前翻页和后翻页

16.more

分页显示 按空格键显示下一页,ctrl+b返回上一页 v 调用vi编辑器 q 退出

17.tail

查看文件的后几行 举例:tail -10 /test/aaa.txt

tail -f 是动态查看(例子:tail -f /test/aaa.txt)

18.echo

打印 举例:echo “hello world”

echo “hello java”> /test/a.txt		(覆盖)
echo “hello java”>> /test/a.txt		(追加)
echo -e “hellon”

19.clear

清空屏幕 Ctrl l

20.which

显示命令路径 举例:which ls

六、进阶命令

01.du

查看目录大小

du -sh /etc/

02.df

查看磁盘大小 一般使用df -h

03.free

显示内存大小 -m 以MB显示 -g 以GB显示

04.wc

统计 wc 有四个参数可选,分别是l,c,m,w

	wc -l filename 报告行数
	wc -c filename 报告字节数
	wc -m filename 报告字符数
	wc -w filename 报告单词数 根据换行和空格统计单词数

05.date

时间相关 date 显示时间 date +%Y-%m-%d 格式化显示时间date "+%Y-%m-%d %H:%M:%S" date -d “1 month ago” 1个月之前 date -d “20180101 1 day ago” 1天之前 date -s 时间 (修改时间) 举例:

[root@hadoop /]# date -s "2019-01-09 15:06:30"

06.cal

日历

07.|

管道符 把左边的结果传给右边

08.grep

过滤 功能:查找匹配格式的内容 格式:grep[参数] <要找的字串> <要寻找字 串的源文件> 用法1:

grep linux a.txt #搜索a.txt文件中字符串linux并输出

用法2:

ls / | grep a.txt #匹配当前目录下文件名字是a.txt的文件

用法3:

cat a.txt | grep linux #搜索a.txt文件中字符串linux并输出

grep -i 忽略大小写 -v 反向过滤

09.find

查找

find /test -name a.txt 搜索系统根目录下的test文件夹下名为a.txt的文件

find 查找路径 -name 要查找的文件名

[root@hd01 /]# find /aaa/bbb/ -name a
/aaa/bbb/a
[root@hd01 /]# find /aaa/bbb/ -name "a*"
/aaa/bbb/a
/aaa/bbb/abc.txt

查找文件size大于10个字节的文件或目录

find ./ -size +10c

查找文件size小于10k的文件或目录

find ./ -size -10k
find ./ -size -10M
find ./ -size -10G
其他...
find ./ -type 

10.useradd

创建用户 创建新用户:useradd 用户名 修改用户密码:passwd 用户名 编辑/etc/sudoers文件,使用命令visudo 在root ALL=(ALL) ALL这一行下面添加: 用户名 ALL=(ALL) ALL :x! 使用普通用户来操作root用户的文件使用命令sudo + 命令,如:

sudo vi /etc/profile

切换用户使用su 用户名 删除用户:

userdel -rf 用户名

11.su

切换用户

su laohou
exit 退出用户

12.chmod

修改权限 语法为:chmod abc file 其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。 r=4 读,w=2 写,x=1 执行权限 若要rwx属性则4+2+1=7; 若要rw-属性则4+2=6; 若要r-x属性则4+1=5。

-rw-r--r--. 1 root root  145 Apr 26 03:22 aaa.txt 文件

-代表文件,-后面的三位代表用户权限,再后三位代表用户组的权限,再后三位代表其他 用户权限 例如:

chmod 777 /test/a.txt  

chmod [u所属用户 g所属组 o其他用户 a所有用户] [+增加权限 -减少权限] [r w x] 目录名 例如:

chmod u+x aaa.txt

13.chown

修改所属用户和组

chown	 hadoop:hadoop filename 修改所属用户各组
chown –R 递归修改

14.ps

显示当前状态的进程信息

ps -ef | grep mysql

15. top

功能:显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等

16.tar

压缩和解压

tar -zcvf /test.tar.gz /test/ 压缩
tar -zxvf /test/a.txt.gz  解压a.txt.gz到当前目录
tar -zxvf /test/a.txt.gz -C /test 解压a.txt.gz到指定目录(大写C)

17.kill

杀死进程

kill -9 1123(进程号)	

18.service

service network restart 重启网卡

19. systemctl是CentOS7的服务管理工具中主要的工具

它融合之前service和chkconfig的功能于一体。 firewalld的基本使用

启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld 
开机禁用  : systemctl disable firewalld
开机启用  : systemctl enable firewalld

20.rpm

rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提 升了Linux的适用度。 rpm -qa 列出所有安装过的包 举例:

rpm -qa | grep mysql

rpm -ivh 带进度安装 rpm -ivh xxx.rpm rpm -e --nodeps卸载 rpm来安装mysql

21.yum

yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。 yum install ... 安装 yum remove ... 卸载 yum update ... 升级所有包,改变软件设置和系统设置,系统版本内核都升级 yum upgrade ... 升级所有包,不改变软件设置和系统设置 yum list 列出所有的包文件 yum -y ... 不提示执行

22.nohup

后台启动进程,配合&使用 例如: nohup sh a.sh &

23.scp

远程发送 将当前机器上的某一个文件发送给另一台机器

scp -r ./a.txt test-hadoop-2-21:/home/hadoop

24.wget

	一般下载资源使用
wget http://xxxxxxxxxx

七、其他命令

01. ip addr

查看ip

02.reboot

重启系统

03.init 0

关机

04.history

历史命令

05.who

显示在线登陆用户

06.hostname

显示主机名 设置主机名:

hostnamectl set-hostname 要设置的名字

08.cut

分割 echo "hello world" | cut -d 指定分隔符 " " -f 2 (通过空格分割,显示第二列)

09.sort

排序 cat /etc/passwd | sort 字典排序,自然排序

-n, --numeric-sort            根据字符串数值比较
-f, --ignore-case             忽略字母大小写
-r, --reverse                 逆序输出排序结果

10.uniq

去重cat /etc/passwd | sort|uniq (去重依赖于sort)

11.Ctrl c

强行停止进程(Ctrl键与C同时按)

12.tree

	以树状形式显示目录结构

13.netstat

 netstat -tunlp

主要查看服务的网络信息

-t|--tcp 显示tcp协议
 -u|--udp 显示udp协议
-n, --numeric    不解析名称
-l, --listening     显示监听服务器套接字
-p, --programs  显示PID

第二章 Shell脚本

1. 简介

Shell就是一个命令行解释器,它的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive)。 Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一 个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。Shell脚本和编程语言很相似,也有变量和流程控制语句,包括循环和分支。但Shell脚本是解释执行的,不需 要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一 行敲到Shell提示符下执行。作为程序设计语言,它虽然不是 Linux系统内核的一部分,但它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。 shell执行脚本是一门解释性语言、批量化处理语言,大大的节省了工作成本 shell脚本第一行必须以 #!开头,它表示该脚本使用后面的解释器解释执行变量 如:#! /bin/bash

1.1定义变量

myName=”小白” String myName=”小白” 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。 同时,变量名的命名须遵循如下规则: · 首个字符必须为字母(a-z,A-Z)。 · 中间不能有空格,可以使用下划线(_)。 · 不能使用标点符号。 使用变量:$变量名 为了区分,我们可以使用${变量名}

1.2删除变量

使用 unset 命令可以删除变量。语法: unset variable_name 变量被删除后不能再次使用。 实例:

#!/bin/bash
myUrl="http://www.baidu.com"
unset myUrl
echo $myUrl

**2.**Shell 字符串

字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。 单引号 str='this is a string' 原样输出 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。 双引号 your_name='qinjx' str="Hello, I know your are "$your_name"!" 转义符 双引号的优点: 双引号里可以有变量 双引号里可以出现转义字符

3.运算符

下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:

运算符 说明 举例
+ 加法 expr $a + $b 结果为 30。,可以是数值型字符串
- 减法 expr $a - $b 结果为 -10。
* 乘法 expr $a \* $b 结果为 200。
/ 除法 expr $b / $a 结果为 2。
% 取余 expr $b % $a 结果为 0。
= 赋值 a=$b 将把变量 b 的值赋给 a。
== 相等。用于比较两个数字,相同则返回 true。 [ $a == $b ] 返回 false。
!= 不相等。用于比较两个数字,不相同则返回 true。 [ $a != $b ] 返回 true。
-gt 相当于> [ $a -gt $b ] 返回 false
-lt 相当于小于 [ $a -lt $b ] 返回 true
! [ !true ] 返回false
-o 或 or [ true -o false ] 返回true
-a 与 and [ true -a false ] 返回false
-ge 大于等于
-le 小于等于

注意:条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]。 运算符除了使用expr还可以通过这种方式

#!bin/bash
a=10
b=20
echo $((($a+$b)*$a))
#!/bin/bash
a=10
b=20
c=$(($a+$b))
echo $c
((d=$a+$b))
echo $d
f=`expr $a + $b`  (反引号)
echo $f

4.for循环

do和done之间的命令称为循环体 举例:

1.第一种

#!bin/bash
for i in {1..10} 1到10
do
echo haha
done

2.第二种

for file in `ls /etc`; do
echo $file
done

3.第三种

#!bin/bash
for i in $(ls /test)
do
echo $i
done

4.第四种

#!bin/bash
for((i=0;i<20;i++))
do
echo $i
done

5.while循环

举例:

#!/bin/bash
sum=1
i=0
while(( i <= 2 ))
do
 let "sum*=10"
 let "i+=1"
done
echo "sum=$sum"
5.1 break、continue

与java用法相同

5.2 sleep

sleep 1 休眠一秒(默认单位是秒)

**6.**read 键盘录入

scanner read命令接收标准输入(键盘)的输入,或其他文件描述符的输入。得到输入后,read命令将数据放入一个标准变量中。 1.读取键盘输入

#! /bin/bash
read -p 请输入第一个数字: first
read -p 请输入第二个数字: second
echo $(($first+$second))

3.读取文件里的内容

while read line
do
arr[$i]=$line
let i+=1
done < /test/a.txt

3.读取EOF之间的内容 远程登录会用到

while read line
do
echo $line
done << EOF
hehe
haha
EOF

7.数组

定义数组 list 方式1:arr=() 方式2: arr=(value1 value2 value3) (这种方式带值) 注意:往数组里添加值,数组的长度自动增长 获取数组的长度:${#arr[*]} 遍历数组

#!/bin/bash
arr=(value value1 value2)
arr[0]=arr[1]=2
arr[2]=3
arr[3]=4
for i in ${arr[*]}; do
echo $i
done

8.条件语句

1.if else
#!/bin/bash
a=1
b=2
if [ $a -gt $b ]
then
echo "a大于b"
else
echo "a小于b"
fi
2.if elif
#!/bin/bash
if [ 1 -gt 2 ];then
echo "1>2"
elif [ 2 -gt 1 ];then
echo "2>1"
else
echo "什么鬼"
fi

If [ -f fileName ]判断是否是文件file If [ -d fileName ]判断是否是文件夹dir

9. Case in

printf "Input integer number: "
read num
case $num in
  1)
    echo "Monday"
    ;;
  2)
    echo "Tuesday"
    ;;
  3)
    echo "Wednesday"
    ;;
  4)
    echo "Thursday"
    ;;
  5)
    echo "Friday"
    ;;
  6)
    echo "Saturday"
    ;;
  7)
    echo "Sunday"
    ;;
  *)
    echo "error"
esac

10. 注释:

单行:# 多行:举例:

#!/bin/bash
:<<!
echo "hehe"
echo "aaaa"
!
echo "haha"
#!/bin/bash
: ' 	(:与’之间有空格)
echo "hehe"
echo "aaaa"
'
echo "haha"

11. $0,$1,$#,$?

$0 代表文件本身的名字,你输入的是什么就显示的什么 $1 代表第一个参数 $# 代表参数的个数 $? 上一条命令的返回值 假如上一条命令执行成功:返回 ture;否则 返回 false 0 代表成功 1 代表失败 例如: wps2

12.Crontab

crontab linux定时任务 crontab [-u username] [-l|-e|-r] 参数: -e: 编辑crontab 的工作内容; -l: 查阅crontab的工作内容; -r: 删除所有的crontab的工作内容,若仅要删除一项,请用-e去编辑; -u: 只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度。 特殊字符 代表意义 (星号) 代表任何时刻都接受的意思。举例来说,范例一内那个日、月、周都是,就代表着不论何月、何日的礼拜几的12:00都执行后续命令的意思。 ,(逗号) 代表分隔时段的意思。举例来说,如果要执行的工作是3:00与6:00时,就会是: 0 3,6 * * * command 时间还是有五列,不过第二列是 3,6 ,代表3与6都适用 -(减号) 代表一段时间范围内,举例来说,8点到12点之间的每小时的20分都进行一项工作: 20 8-12 * * * command 仔细看到第二列变成8-12.代表 8,9,10,11,12 都适用的意思 /n(斜线) 那个n代表数字,即是每隔n单位间隔的意思,例如每五分钟进行一次,则: /5 * * * * command 用与/5来搭配,也可以写成0-59/5,意思相同 几个例子: 1.每天早上6点 0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron 把任何输出都email到root的信箱了。 2.每两个小时 0 */2 * * * echo "Have a break now." >> /tmp/test.txt
3.晚上11点到早上8点之间每两个小时和早上八点 0 23-8/2,8 * * * echo "Have a good dream" >> /tmp/test.txt 4.每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 0 11 4 * 1-3 command line 实现秒级执行任务:

*/1   *    *    *    *    sleep 3 && echo "goodmorning" >> /test/a.txt
*/1   *    *    *    *    sleep 6 && echo "goodmorning" >> /tess/a.txt
*/1   *    *    *    *    sleep 9 && echo "goodmorning" >> /test/a.txt
*/1   *    *    *    *    sleep 12 && echo "goodmorning" >> /test/a.txt
......

第三章 Linux中高阶命令

1. awk

cut 进阶 awk awk有几个常用的参数。 img -F 指定分隔符,并且使用正则表达式 img img $0 可以输出一行内容 $1 $3 ... 这些是根据指定分隔符,分别获取对应参数的。 NF 字段数量变量 NR 每行的记录号,多文件记录递增 img 需求:列出root目录下,每行长度等于9,并显示出文件或文件夹的名字。 img -v定义变量 var=value img

BEGIN  初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量
END    结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息

需求:将root路径下,所有的文件和文件夹 写入到数组中,并遍历出来。 定义一个变量

arr[0]=”2019-04-13”
arr[1]=”4hw.sh”

img if语句 == != > >= < <= && || img ; 多条命令使用分号分隔

2. sed

可以使用正则表达式 需求:我想修改find.txt文件夹中的usr改成user 参数: -i 直接修改文件内容 img

-e 选项允许在同一行里执行多条命令

img img 命令: s 替换指定字符 d 删除,删除选择的行 [删除空白行,指定删除行] g 表示行内全面替换 [可以使用/Ng从第N处开始替换] sed -i(真正修改文本文件) 's(要修改字符串就得加上)/你想修改的内容/修改为什么内容/g(行内匹配到的全部修改)' path(你要 修改的文件路径) img

替换字符串中的字符 命令s 用法

img img img img img

3. seq

seq一般做测试 seq快速创建多个文件夹或者文件 等宽输出 -f和-w不能同时使用

-f 格式化输出

img img 创建多个文件夹或者文件。目的是为了方便测试或使用 img img

-w 等宽输出

img

-s 使用指定的字符串分割数字,默认是\n

img

arr=(`seq -s " " 10`) 

4. xargs

xargs命令,给其他命令传递参数的过滤器。 xargs的默认命令是echo,空格是默认定界符。 几个常用参数: -n选项多行输出 img -d 可以自定义一个定界符 img -I 指定一个替换字符串{} 需求:将text03中所有以.txt结尾的文件复制到 /test02当中 img Xargs结合find使用 需求:查找根目录下所有 .txt结尾的文件,并将文件中的内容写入到 指定文本 find / -type f -name “*.txt”|xargs -I {} cat {} img

第四章 Linux安装jdk、mysql

一、修改Cenos 7 yum源为国内源

1.更新现有包 所有的包 免提示更新

yum -y update

2.wget 从网络下载资源

yum -y install wget

-O 指定将资源下载到那个文件 3.移动文件或文件夹 修改文件名,将CentOS-Base.repo备份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak

4.从mirrors.aliyun.com/ 下载资源到 CentOS-Base.repo文件中

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

5.缓存

yum makecache 
就是把服务器的包信息下载到本地电脑缓存起来,makecache建立一个缓存
以后用install时就在缓存中搜索,提高了速度。

6.更新包

yum -y update
No packages marked for update  没有包可更新了

二、Linux安装jdk1.8

1.在根目录创建software目录

mkdir /software

2.上传jdk-8u181-linux-x64.tar.gz到/software中 image-20200907095347639 image-20200907095432499 3.将jdk包解压到opt目录

tar -zxvf /software/jdk-8u181-linux-x64.tar.gz -C /opt/

4.vim进入/etc/profile文件 跳到文件最后一行,输入i进入编辑模式,配置java环境变量。(注意路径是自己java的路径)

export JAVA_HOME=/opt/jdk1.8.0_181
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

5.保存并推出,刷新环境变量

source /etc/profile

6.输入java -version 查看java版本

java -version

在输入javac 测试是否可用

javac

三、Linux安装Mysql

1.卸载mariadb

yum remove mariadb -y

2.查找mariadb包

rpm -qa | grep mariadb

会找到 mariadb-libs-5.5.60-1.el7_5.x86_64 也删除:(版本号可能不一样,一定要仔细查看)

yum remove mariadb-libs-5.5.60-1.el7_5.x86_64 -y

3.删除遗留文件

rm -rf /var/lib/mysql/
wget http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm

下载mysql: 1.安装rpm

rpm -ivh mysql57-community-release-el6-7.noarch.rpm
vim /etc/yum.repos.d/mysql-community.repo

找到mysql57,修改为以下内容:

[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
*gpgcheck=0*
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

2.rpm安装

​ 使用命令rpm -ivh {-file-name}进行安装操作。

​ 按照依赖关系依次安装rpm包 依赖关系依次为common→libs→client→server

rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
yum install -y net-tools
rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm

3.启动服务

systemctl start mysqld
systemctl enable mysqld

4.查看临时密码

​ 在安装过程中,会在安装日志中生成一个临时密码。

​ 怎么找到这个临时密码呢?

​ 在 /var/log/mysqld.log 文件中搜索字段 ‘temporary password’

使用:

grep 'temporary password' /var/log/mysqld.log

cat /var/log/mysqld.log | grep "temporary password"

即可查询到类似于如下的一条日志记录: 最后写的就是临时密码

image-20201208091433430

如果没有显示出密码,可以删除/var/lib/mysql,然后重新启动服务
注意:然后通过 mysql -u root -p 回车, 将临时密码粘贴进去,回车就进去了。

5.修改密码

	set global validate_password_policy=LOW; 
	set global validate_password_length=4;
	alter user 'root'@'localhost' identified by '123456你自己得mysql密码';

image-20201208093745285

​ 此时,虽然防火墙是关着的,但root用户只能用于本机访问,不能用于远程访问,否则会报错误。

​ 因此,接下来要做的是授予root用户远程访问权限。

6.打开远程连接

update mysql.user set host='%' where user='root';

7.刷新授权

flush privileges;

8.退出mysql

quit

9.修改编码

vim /etc/my.cnf
在[mysqld]下添加:
character-set-server=utf8
退出保存并重启服务
service mysqld restart
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
ZT8lPCn7HRRr