最近打算轉戰 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
複製代碼