[工具] Shell 还原本地网站文件和网站数据库备份到本地 LNMP

介绍

基本信息

作者:朱明宇
名称:将本地网站文件备份和网站数据库备份还原到本地 LNMP
作用:将本地网站文件备份和网站数据库备份还原到本地 LNMP

使用方法

1. 将网站的文件备份、网站的 SSL 公钥、网站的 SSL 私钥、网站的数据库备份,4 个文件放在此脚本中变量 tmppath 对应的目录里
2. 给此脚本添加执行权限
3. 执行此脚本

脚本分割线里的变量

tmppath=/bcache #本地存放网站的文件备份、网站的 SSL 公钥、网站的 SSL 私钥、网站的数据库备份的地方
midname=eternalcenter #网站的文件备份和网站的数据库备份的中间名
cmidname=fullchain #网站的 SSL 公钥的中间名
kmidname=privkey #网站的 SSL 私钥的中间名
webpath=/usr/share/nginx/html #网站文件在本地的正式存放位置
sslpath=/etc/nginx/ssl #网站网站的 SSL 公钥、网站的 SSL 私钥在本地的正式存放位置dbuser=ec #网站在数据库中的用户名
dbname=ec #网站在数据库中的的库名

注意

1. 本地需要已经搭建好 LNMP 平台
2. 必须以 root 的身份执行此脚本
3. 这里的网站的 SSL 公钥和网站的 SSL 私钥都是以 pem 后缀结尾,可以修改成真实对应的后缀
4. 脚本中类似 ”mysql -uroot -p’eternalcenter’ -e “drop database $dbname;”“ 中的 “eternalcenter“ 是指本地 MariaDB 数据库 root 用户的密码,需要修改成 MariaDB 数据库的 root 用户的真实密码

脚本

#!/bin/bash

####################### Separator ########################


tmppath=/bcache
midname=eternalcenter
cmidname=fullchain
kmidname=privkey

webpath=/usr/share/nginx/html
sslpath=/etc/nginx/ssl

dbuser=ec
dbname=ec


####################### Separator ########################

nowdirectory=`pwd`

#sudo systemctl stop nginx
#sudo systemctl stop php-fpm

cd $tmppath

sqlfile=`ls | grep $midname | grep -E \.sql$ | tail -1`
tarfile=`ls | grep $midname | grep -E \.tar | tail -1`
crtfile=`ls | grep $cmidname | grep -E \.pem$ | tail -1`
keyfile=`ls | grep $kmidname | grep -E \.pem$ | tail -1`


#sleep 300

echo $sqlfile
if [ -n "$sqlfile" ];then
    mysql -uroot -p'eternalcenter' -e "drop database $dbname;"
    mysql -uroot -p'eternalcenter' -e "create database $dbname;"
    mysql -uroot -p'eternalcenter' -e "grant all privileges on $dbuser.* to \"$dbuser\"@\"localhost\";"
    mysql -uroot -p'eternalcenter' $dbname < $sqlfile
    rm -rf $sqlfile
fi

echo $tarfile
if [ -n "$tarfile" ];then
    rm -rf $webpath/*
    tar -zxvf $tarfile -C $webpath/ &> /dev/null
    rm -rf $tarfile
    chcon -t httpd_sys_content_t -R $webpath/*
    chown -R php-fpm:php-fpm $webpath/
fi

echo $crtfile
if [ -n "$crtfile" ];then
    rm -rf $sslpath/$crtfile
    mkdir -p $sslpath &> /dev/null
    mv $crtfile $sslpath/
    chcon -t httpd_config_t $sslpath/*
fi

echo $keyfile
if [ -n "$keyfile" ];then
    rm -rf $sslpath/$keyfile
    mkdir -p $sslpath &> /dev/null
    mv $keyfile $sslpath/
    chcon -t httpd_config_t $sslpath/*
fi

chcon -t httpd_config_t $sslpath

sudo systemctl restart nginx
sudo systemctl restart php-fpm

cd $nowdirectory

[SQL] MariaDB & MySQL 用户和权限的管理

内容一:添加权限

> grant process on *.* to 'mingyuzhu'@'10.0.0.%';
> flush privileges;

(补充:这里以给用户 ‘mingyuzhu’@’10.0.0.%’ 添加 process 权限为例)

内容二:取消权限

> grant ALL PRIVILEGES on *.* to 'mingyuzhu'@'10.0.0.%';
> flush privileges;

(补充:这里以取消用户 ‘mingyuzhu’@’10.0.0.%’ 的所有权限为例)

[SQL] MariaDB & MySQL 用户权限的显示

内容一:显示当前用户的所有权限

> show grants;

或者:

> show grants for current_user();

内容二:显示某个用户的所有权限

> show grants root;

(补充:这里以显示 root 用户的所有权限为例)

内容三:显示所有用户的所有权限

3.1 合成显示所有用户的所有权限的 SQL 语句

> select concat('show grants for ''',user,'''@''',host,''';') as query from mysql.user;
+-------------------------------------+
| query                               |
+-------------------------------------+
| show grants for 'root'@'127.0.0.1'; |
| show grants for 'root'@'::1';       |
| show grants for 'root'@'localhost'; |
| show grants for 'root'@'mysql';     |
+-------------------------------------+
4 rows in set (0.000 sec) 

3.2 显示所有用户的所有权限

> show grants for 'root'@'127.0.0.1';
show grants for 'root'@'::1';
show grants for 'root'@'localhost';
show grants for 'root'@'mysql';

(补充:这里使用的 SQL 语句是上个步骤 3.1 合成的)

[步骤] MariaDB & MySQL 的无密码登录 (使用 –login-path 命令对 MariaDB & MySQL 的密码进行加密保存)

步骤一:创建对 MariaDB & MySQL 的密码进行加密保存的设置

# mysql_config_editor set --login-path=test --user=root --host=127.0.0.1 --port=3306 --password
Endter Password:


补充:这里以
1) 创建名为 test 的设置
2) 登录用户是 root
3) 登录服务器是 127.0.0.1
4) 登录端口是 TCP 3306
5) 单独输入密码
为例

步骤二:显示所有 MariaDB & MySQL 的密码加密设置

# mysql_config_editor print --all

步骤三:使用 MariaDB & MySQL 的密码加密设置登录数据库

# mysql --login-path=test

(补充:这里以使用 test 的设置登录 MariaDB & MySQL 为例)

步骤三:删除MariaDB & MySQL 的密码加密设置

3.1 显示所有 MariaDB & MySQL 的密码加密设置

# mysql_config_editor print --all

3.2 删除对 MariaDB & MySQL 的密码进行加密保存的设置

# mysql_config_editor remove --login-patch=test

(补充:这里以删除名为 test 的密码加密设置为例)