Centos 7 的实战总结

1,835 阅读7分钟

前言

最近打算转战 Linux 服务器,为后续的 docker 容器化和 k8s 服务编排做准备。我在日常开发中,使用最多的是 windows server 服务器,linux 服务器使用过一些常用的命令。最近晚上修仙看视频加网上查资料,算是对 linux 熟悉了一点。

本文主要涉及内容

  • ssh 无密码登录服务器
  • Linux 用户和用户组管理
  • rpm 包安装 、本地 yum 源搭建,阿里yum 源使用
  • Mysql 安装、修改 root 密码、忘记 root 密码怎么修改

内容实践环境

  • Cenos 7
  • macOs Catalina 10.15.2
  • 终端使用 iterm2

ssh 链接服务器

当你厌烦了一次一次输入账号和密码,那可以尝试 shh 公钥私钥登录。

# 直接输入以下命令,即可链接远程服务器
ssh mflyyou

1、生成公钥私钥

ssh-keygen -o -t rsa  -b 4096

2、复制公钥远程服务器

公钥以 .pub 结尾。

# ssh-copy-id -i {公钥绝对路径} {远程服务器用户名}@{远程服务器 ip}
ssh-copy-id -i /Users/zhangpanqin/.ssh/test_local_server.pub parallels@10.211.55.8

以上命令作用是,将指定的公钥内容,拷贝到远程服务器上的指定用户(parallels)下。这样以后这个用户(parallels)就可以不用输入密码登录了。

运行上述命令,等价于将公钥内容拷贝到 /home/parallels/.ssh/authorized_keys。

windows 系统没有 ssh-copy-id,可以手动拷贝公钥的内容到 /home/parallels/.ssh/authorized_keys

3、本地电脑配置私钥验证

本地电脑下 ~/.ssh/config 添加以下内容。

Host mflyyou.com
  HostName 10.211.55.8
  AddKeysToAgent yes
  UseKeychain yes
  User parallels
  IdentityFile /Users/zhangpanqin/.ssh/test_local_server

用户和用户组管理

Linux 以文件来管理系统。良好的用户管理,利于服务器安全。这块我看了视频和资料都推荐不同的程序使用不同的用户。安装程序的用户不具有管理员权限,当需要管理员权限时,使用 sudo 来提升权限使用。

用户创建

# 创建 mflyyou 用户,同时会创建 mflyyou 组
adduser mflyyou

# 修改 mflyyou 的密码,命令之后会提示你输入密码 passwd mflyyou

以上创建的用户是不具有 sudo 提升权限的能力,需要修改 /etc/sudoers 使之生效。

# 在 root 下运行,修改文件的可写性
chmod  700 /etc/sudoers

# /etc/sudoers 文件中填写 mflyyou ALL=(ALL) PASSWD:ALL root ALL=(ALL) ALL mflyyou ALL=(ALL) PASSWD:ALL

# 权限给了之后,修改文件 /etc/sudoers 为只读性 chmod 400 /etc/sudoers

对文件(夹)分配读写执行权限

为了避免其它用户修改当前用户的文件内容,为了安全。

需要对安装的程序的文件夹或文件划分权限。 4 读 r,2 编辑 w,1 执行 x

chmod 754 /opt/config

修改 /opt/config 所属用户、用户组、其它人的读、编辑、执行权限。 所属用户:读、编辑、执行,7 所属组:读、执行,5 其他:读,4

修改文件夹或者文件的所属用户和用户组

# 递归修改 /opt/config 的归属 admin 用户,所属 admin 组
chonw -R admin:admin  /opt/config 

rpm 包

linux 分为源码包和rpm 包。源码包需要我们自己编译,然后安装,自由度比较高。rpm 包是厂商编译好的二进制包,可以类比 windows .exe 包。但 rpm 包安装的时候需要处理依赖关系。因此,yum 管理 rpm 包诞生。yum 一般需要联网,有的时候,部署的服务器没有网络,我们可以通过挂载光盘或者 U 盘搭建本地 yum 源使用。

rpm 包安装的好处之一是我们不需要配置环境变量了。包已经内置处理好了。

比如我们安装 jdk ,通过官网下载 jdk rpm 包。

安装 rpm 包

# 安装 rpm 包
rpm -ivh 包全名

查询安装的 rpm 包

rpm -qa | grep 包名

卸载 rpm 包

rpm -e 包名

查询文件属于哪个 rpm 包

rpm 也提供了查询文件属于哪个包,我们可以作为判断这个文件是否木马的依据之一。

rpm -qf 系统文件名

校验 rpm 包安装之后做了哪些修改

有的时候我们安装包之后,想知道更改了哪些修改文件。rpm 也提供了能力查询。

rpm -V 包名

查询 rpm 包中的资源会安装到哪里

有的时候,我们想知道 rpm 会将包安装到哪些位置也可以做到

# 查询包安装位置
rpm -ql 包名

提取 rpm 中的文件

可能会存在这样的事情,我们把 java 这个执行文件删掉了。但又不想重新安装jdk。我们可以从对应的 rpm 个包中,导出具体的执行文件。或者对应的系统命令 ll。

# 从 rpm 包中提取丢失的文件
rpm2cpio jdk-13.0.1_linux-x64_bin.rpm |cpio -idv ./usr/java/jdk-13.0.1/bin/java

上述命令相当于解压 rpm 包,当 cpio -idv 跟某个文件的路径。即提取制定的文件。

# 相当于解压 rpm 包到当前相对路径下
rpm2cpio jdk-13.0.1_linux-x64_bin.rpm |cpio -idv

上述包没有别的依赖,操作还挺简单,当遇到以下情况: 你安装 mysql-server ,mysql-server 依赖 client 包,client 包依赖common包,还以lib 包。当你 rpm 安装的时候不停报错,然后你不停安装不存在的依赖包。想想都挺烦的,所以 yum 解放了我们的双手啊。

yum 安装

国外的 yum 源速度较慢,使用阿里云提供了yum 源镜像,速度挺快,给阿里点赞。

修改 yum 源为阿里镜像

# 备份 yum 配置文件,便于出错后可以恢复
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

# 下载阿里 yum 源 wget -O /etc/yum.repos.d/CentOS-Base.repo mirrors.aliyun.com/repo/Centos…

# 清除 包的缓存,并加载阿里镜像包缓存 yum clean all yum makecache

只需下载指定的系统的配置就好,阿里已经帮我们配置好了。

yum 安装

# 列举所有包
yum list

# 搜索包 yum search

# 安装包, -y 免于确认是否安装 yum -y install 包名

# 升级包,一定要指定包,不然 linux 全局更新 yum -y update 包名

# 卸载包,尽量不卸载 yum -y remove 包名

搭建本地 yum 源 和安装某个程序的源。留到安装 mysql 。

Mysql 安装

Centos 7 默认不提供 Mysql 作为数据库。

1、下载官方提供的 Mysql yum 源。

缺点就是,从这个 yum 源下载的 rpm 包速度比较慢。

# 安装 yum repositoty
sudo yum localinstall https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm

没有安装 mysql yum reposity 时,本地 yum 配置。

执行完命令之后,增加了 mysql 的 yum 源,但是这些资源都是国外的,下载有点慢

# 清除旧包的缓存,并加载新 yum 源缓存
yum clean all
yum makecache

查询 mysql-community-server

 yum list | grep "mysql.*-community.*server"

然后安装 mysql-community-server

# 速度有点慢
yum install mysql-community-server

搭建本地 yum 源安装 Mysql

服务器下载 Mysql 的所有依赖包

创建 /mnt/local/packages

将下载的压缩包,解压缩 /mnt/local/packages 下。

生成 yum 源信息

cd /mnt/local
createrepo .

运行命令,生成 yum 源信息

在服务器中配置 yum 源

# 生成 yum 配置文件
sudo touch /etc/yum.repos.d/CentOS-local.repo

# CentOS-local.repo 的内容如下

# local-mysql 为 yum 源名称,当使用 yum list 的时候可以看到它 [local-mysql] name=local_mysql_diy

# yum 源所在位置 baseurl=file:///mnt/local/

# 配置不检查认证 gpgcheck=0

# 使 local-mysql 这个配置生效 enabled=1

# 秘钥位置 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

刷新 yum 源

yum clean all
yum makecache

安装 Mysql

yum install mysql-community-server

启动 Mysql

# 启动 mysql 
sudo systemctl enable mysqld
sudo systemctl start mysqld

# 查看 mysql 运行的状态 sudo systemctl status mysqld

# 查询初始化密码 sudo grep 'temporary password' /var/log/mysqld.log

# 为避免 navicat 不能连接 mysql,修改 /etc/my.cnf
[mysqld] 
default-authentication-plugin=mysql_native_password

修改密码

# 登录 mysql
mysql -u root -p123456
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Root@2020';

mysql 创建用户

# 创建用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';

# 创建数据库 CREATE DATABASE sonar CHARACTER SET 'utf8mb4';

# 授权 # select,insert,update,delete 对表数据操作 # 对表操作 create,alter,drop grant select,insert,update,delete,create,alter,drop on sonar.* to 'sonar'@'%';

Mysql 8.0 忘记密码

# 编辑配置文件,
vim /etc/my.cnf

# [mysqld] 下添加 skip-grant-tables

# 重新启动 mysql systemctl restart mysqld

# 免密码登录 mysql mysql

# 选择数据库
use mysql;
# 查看用户信息
select host, user, authentication_string, plugin from user;
# 修改密码为空
update user set authentication_string='' where user='root';
# 退出 mysql
# 去掉 /etc/my.cnf [mysqld] 中的 skip-grant-tables
# 重新启动 mysql
systemctl restart mysqld
# 登录 mysql

# 为避免 navicat 不能连接
ALTER USER 'sonar'@'%' IDENTIFIED WITH mysql_native_password BY 'Sonar@2020';

其他命令

查看端口占用

netstat -anp|grep 8080