第一章 Linux命令
一、简介
Linux是一类Unix计算机操作系统的统称。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。在1991 年的十月,由一个名为 [Linus Torvalds](https://baike.baidu.com/item/Linus Torvalds)的年轻芬兰大学生带头开发的作业系统。
二、特点
开放性,多用户,多任务,优异的性能和稳定性
三、安装
参考文档 镜像下载https://wiki.centos.org/Download 一般是非盈利社区
四、目录结构
/ 最顶级目录,所有的东西都在/目录下
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 代表失败 例如:
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有几个常用的参数。 -F 指定分隔符,并且使用正则表达式
$0 可以输出一行内容 $1 $3 ... 这些是根据指定分隔符,分别获取对应参数的。 NF 字段数量变量 NR 每行的记录号,多文件记录递增
需求:列出root目录下,每行长度等于9,并显示出文件或文件夹的名字。
-v定义变量 var=value
BEGIN 初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量
END 结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息
需求:将root路径下,所有的文件和文件夹 写入到数组中,并遍历出来。 定义一个变量
arr[0]=”2019-04-13”
arr[1]=”4hw.sh”
if语句 == != > >= < <= && ||
; 多条命令使用分号分隔
2. sed
可以使用正则表达式 需求:我想修改find.txt文件夹中的usr改成user 参数: -i 直接修改文件内容
-e 选项允许在同一行里执行多条命令
命令: s 替换指定字符 d 删除,删除选择的行 [删除空白行,指定删除行] g 表示行内全面替换 [可以使用/Ng从第N处开始替换] sed -i(真正修改文本文件) 's(要修改字符串就得加上)/你想修改的内容/修改为什么内容/g(行内匹配到的全部修改)' path(你要 修改的文件路径)
替换字符串中的字符 命令s 用法
3. seq
seq一般做测试 seq快速创建多个文件夹或者文件 等宽输出 -f和-w不能同时使用
-f 格式化输出
创建多个文件夹或者文件。目的是为了方便测试或使用
-w 等宽输出
-s 使用指定的字符串分割数字,默认是\n
arr=(`seq -s " " 10`)
4. xargs
xargs命令,给其他命令传递参数的过滤器。 xargs的默认命令是echo,空格是默认定界符。 几个常用参数: -n选项多行输出 -d 可以自定义一个定界符
-I 指定一个替换字符串{} 需求:将text03中所有以.txt结尾的文件复制到 /test02当中
Xargs结合find使用 需求:查找根目录下所有 .txt结尾的文件,并将文件中的内容写入到 指定文本 find / -type f -name “*.txt”|xargs -I {} cat {}
第四章 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中
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"
即可查询到类似于如下的一条日志记录: 最后写的就是临时密码
如果没有显示出密码,可以删除/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密码';
此时,虽然防火墙是关着的,但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