最近打算转战 Linux 服务器,为后续的 docker 容器化和 k8s 服务编排作准备。我在平常开发中,使用最多的是 windows server 服务器,linux 服务器使用过一些经常使用的命令。最近晚上修仙看视频加网上查资料,算是对 linux 熟悉了一点。java
本文主要涉及内容mysql
内容实践环境linux
当你厌烦了一次一次输入帐号和密码,那能够尝试 shh 公钥私钥登陆。web
# 直接输入如下命令,便可连接远程服务器
ssh mflyyou
复制代码
ssh-keygen -o -t rsa -b 4096
复制代码
公钥以 .pub 结尾。sql
# ssh-copy-id -i {公钥绝对路径} {远程服务器用户名}@{远程服务器 ip}
ssh-copy-id -i /Users/zhangpanqin/.ssh/test_local_server.pub parallels@10.211.55.8
复制代码
以上命令做用是,将指定的公钥内容,拷贝到远程服务器上的指定用户(parallels)下。这样之后这个用户(parallels)就能够不用输入密码登陆了。docker
运行上述命令,等价于将公钥内容拷贝到 /home/parallels/.ssh/authorized_keys。数据库
windows 系统没有 ssh-copy-id,能够手动拷贝公钥的内容到 /home/parallels/.ssh/authorized_keysvim
本地电脑下 ~/.ssh/config 添加如下内容。windows
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
复制代码
linux 分为源码包和rpm 包。源码包须要咱们本身编译,而后安装,自由度比较高。rpm 包是厂商编译好的二进制包,能够类比 windows .exe 包。但 rpm 包安装的时候须要处理依赖关系。所以,yum 管理 rpm 包诞生。yum 通常须要联网,有的时候,部署的服务器没有网络,咱们能够经过挂载光盘或者 U 盘搭建本地 yum 源使用。
rpm 包安装的好处之一是咱们不须要配置环境变量了。包已经内置处理好了。
好比咱们安装 jdk ,经过官网下载 jdk rpm 包。
# 安装 rpm 包
rpm -ivh 包全名
复制代码
rpm -qa | grep 包名
复制代码
rpm -e 包名
复制代码
rpm 也提供了查询文件属于哪一个包,咱们能够做为判断这个文件是否木马的依据之一。
rpm -qf 系统文件名
复制代码
有的时候咱们安装包以后,想知道更改了哪些修改文件。rpm 也提供了能力查询。
rpm -V 包名
复制代码
有的时候,咱们想知道 rpm 会将包安装到哪些位置也能够作到
# 查询包安装位置
rpm -ql 包名
复制代码
可能会存在这样的事情,咱们把 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 配置文件,便于出错后能够恢复
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 list
# 搜索包 yum search
# 安装包, -y 免于确认是否安装 yum -y install 包名
# 升级包,必定要指定包,否则 linux 全局更新 yum -y update 包名
复制代码# 卸载包,尽可能不卸载 yum -y remove 包名 复制代码
搭建本地 yum 源 和安装某个程序的源。留到安装 mysql 。
Centos 7 默认不提供 Mysql 做为数据库。
缺点就是,从这个 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
复制代码
/mnt/local/packages
将下载的压缩包,解压缩 /mnt/local/packages
下。
cd /mnt/local
createrepo .
复制代码
运行命令,生成 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 clean all
yum makecache
复制代码
yum install mysql-community-server
复制代码
# 启动 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';
复制代码
# 建立用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
# 建立数据库 CREATE DATABASE sonar复制代码
CHARACTER SET 'utf8mb4';
复制代码sonar复制代码# 受权 # select,insert,update,delete 对表数据操做 # 对表操做 create,alter,drop grant select,insert,update,delete,create,alter,drop on sonar.* to 'sonar'@'%'; 复制代码
# 编辑配置文件,
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
复制代码