diff --git "a/41 \351\231\210\345\200\251\345\200\251/20240520_Linux\345\237\272\347\241\200\345\221\275\344\273\244.md" "b/41 \351\231\210\345\200\251\345\200\251/20240520_Linux\346\226\207\344\273\266\347\233\256\345\275\225\347\273\223\346\236\204.md" similarity index 100% rename from "41 \351\231\210\345\200\251\345\200\251/20240520_Linux\345\237\272\347\241\200\345\221\275\344\273\244.md" rename to "41 \351\231\210\345\200\251\345\200\251/20240520_Linux\346\226\207\344\273\266\347\233\256\345\275\225\347\273\223\346\236\204.md" diff --git "a/41 \351\231\210\345\200\251\345\200\251/20240528_ \345\205\263\344\272\216\346\237\245\346\211\276\347\232\204\345\221\275\344\273\244.md" "b/41 \351\231\210\345\200\251\345\200\251/20240528_ find&grep.md" similarity index 100% rename from "41 \351\231\210\345\200\251\345\200\251/20240528_ \345\205\263\344\272\216\346\237\245\346\211\276\347\232\204\345\221\275\344\273\244.md" rename to "41 \351\231\210\345\200\251\345\200\251/20240528_ find&grep.md" diff --git "a/41 \351\231\210\345\200\251\345\200\251/20240702_sort&uniq&cut&wc\345\221\275\344\273\244.md" "b/41 \351\231\210\345\200\251\345\200\251/20240702_sort&uniq&cut&wc\345\221\275\344\273\244.md" new file mode 100644 index 0000000000000000000000000000000000000000..d6a6fdab17c7ceefbeaad75ff5bfefe3d155a0c1 --- /dev/null +++ "b/41 \351\231\210\345\200\251\345\200\251/20240702_sort&uniq&cut&wc\345\221\275\344\273\244.md" @@ -0,0 +1,44 @@ +## sort命令 + +```bash +sort [选项] 文件名 +``` + +- 选项 + - -r (reverse)倒序 + - -n (number)忽略除了数值以外的其它字符 + - -u (unique)去重 + - -k+列 根据第几列排序 // -k 2 根据第二个字符排序 -k1.2 根据第一行第二个字符排序 + - -t 指定分隔符 + - -b 忽略空格 + +## uniq命令 + +```bash +uniq [选项] 文件名 +``` + +- 选项 + - -c (count)在每列旁边显示改行重复出现的次数 + - -d (repeated)只显示重复出现的行列 + - -u (unique)去重 + +## cut命令 + +```bash +cut [选项] 文件名 +``` + +- 选项 + - -b 以字节为单位进行分割,这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。 + - -c 以字符为单位进行分割 + +## wc命令 + +```bash +wc [选项] 文件名 +``` + +- 选项 + - -l (lines)显示行数 + - -w (words)只显示字数 \ No newline at end of file diff --git "a/41 \351\231\210\345\200\251\345\200\251/20240702_\345\256\211\350\243\205apache.md" "b/41 \351\231\210\345\200\251\345\200\251/20240702_\345\256\211\350\243\205apache.md" new file mode 100644 index 0000000000000000000000000000000000000000..d2b9a0ce7124dc92ccd394b9519ee5212ee66b19 --- /dev/null +++ "b/41 \351\231\210\345\200\251\345\200\251/20240702_\345\256\211\350\243\205apache.md" @@ -0,0 +1,92 @@ +## 安装apache以及部署SSL步骤 + +1. 更新列表 + + ```bash + apt update + ``` + +2. 安装apache + + ```bash + apt install apache2 -y + ``` + +3. 查看apache状态以及修改相关配置 + + ```bash + systemctl status apache2 + #如果是running代表成功可执行第五个步骤,如果是failed或其他爆红,可能是80端口被其它占用导致冲突,则需要添加其他端口,解决如下: + ``` + + 1. 查看apache所在路径 + + ```bash + whereis apache2 + ``` + + 2. 手动开启apache的ssl模块,然后再配置文件 + + ```bash + a2enmod ssl + ``` + + 3. 进入/etc/apache2中修改相关命令 + + - 方法一 + + ```bash + 1. vim ports.conf ---> 将listen,ssl改为冲突外的其它端口 + 2. 新建一个文件夹,并将自己申请的ssl证书中下载apache的三个文件(public.crt文件, .key文件 ,chain.crt文件)添加进去 + 3. 在sites-enabled文件中新建*.conf文件,在*.conf文件中添加如下: + + ServerName 你自己的域名 + ServerAlias 域名的别名 + ServerAdmin webmaster@localhost + DocumentRoot 你自己网站的目录 + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + SSLEngine on + SSLHonorCipherOrder on + SSLProtocol TLSv1.1 TLSv1.2 TLSv1.3 + SSLCipherSuite ECDHE-RSA-AES128-GCM- SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4 + SSLCertificateFile 你自己的证书public.crt文件路径(三个都是绝对路径) + SSLCertificateKeyFile 你自己证书.key文件路径 + SSLCertificateChainFile 你自己证书chain.crt文件路径 + + ``` + + + + - 方法二 + + ```bash + 1. vim ports.conf ---> 将listen,ssl改为冲突外的其它端口 + 2. 新建一个文件夹,并将自己申请的ssl证书中下载apache的三个文件(public.crt文件, .key文件 ,chain.crt文件)添加进去 + 3. 在sites-availabled的第二个文件(default-ssl.conf)中,修改第一行的端口,对应位置加上自己证书的绝对路径 + 4. 添加软连接 ln -s [源文件] [软连接文件] + ``` + + + + +4. 通过防火墙开启需要访问的端口,同时ssh会被关闭 + +```bash +apt install ufw #下载防火墙 +systemctl status ufw #查看防火墙状态 +ufw allow OpenSSH #开启ssh连接避免断连 +ufw allow 22/tcp #开启ssh中所需端口避免断连 +ufw enable #开启防火墙 +ufw status #查看防火墙中开启的端口 +``` + +1. 重启apache + + ```bash + systemctl restart apache2 + ``` + +2. 成功后验证如下 以及网页为https + +![apache](./imgs/apache2) diff --git "a/41 \351\231\210\345\200\251\345\200\251/20240703_MySQL.md" "b/41 \351\231\210\345\200\251\345\200\251/20240703_MySQL.md" new file mode 100644 index 0000000000000000000000000000000000000000..0547dc4de121d6baeb05e0616712a03eae026595 --- /dev/null +++ "b/41 \351\231\210\345\200\251\345\200\251/20240703_MySQL.md" @@ -0,0 +1,230 @@ +## 下载MySQL + +1. 在官网中找到并复制具体下载的.deb包,我们用的是community中的apt版本 + + ```bash + apt update #先更新列表 + wget https://repo.mysql.com//mysql-apt-config_0.8.30-1_all.deb + dpkg -i mysql-apt-config_0.8.30-1_all.deb + apt update / apt upgrade #下载完后再更新一下 + 其中的配置为默认,下载8.0及以上版本 + ``` + +2. 在命令行中下载组件 + + ```bash + apt install mysql-server -y + 在此期间会设置root密码,其余的默认 + ``` + +3. 查看版本、状态以及连接数据库 + + ```bash + #版本 + mysql --version + #状态 + systemctl status mysql + #登录 + mysql -u root -p + ``` + +## MySQL命令 + +1. 常用命令 + + ```mysql + #修改初始登录密码 + 1. ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; + 2. update user set password=password('new_password') where user='root'; + #刷新权限 + flush privileges; + #退出MySQL + exit; + ``` + +2. 增 + +```mysql +#创建数据库 +create database [if not exists] 库名; +#创建数据表 +create table [if not exists] 表名( +字段 类型 属性, +id int auto_increment primary key, -- 自增auto_increment,主键primary key +sex char(1) default '男' comment '性别'; -- 默认default,更名comment +); +#插入数据 +insert into 表名 (字段1,字段2...) values ('值1','值2',...) +``` + +3. 删 + +```mysql +#删除数据库 +drop database [if exists] 库名; +#删除数据表中的数据 +delete from 表名 where 列=''; +``` + +4. 改 + +```mysql +#修改表字段名 +update 表名 set 新列='' where 原列=''; +#修改表约束 +alter table 表名 modify 列名 varchar(11); +``` + +5. 查 + +```mysql +#显示所有的数据库 +show databases; +#显示数据库中所有的表 +show tables; +#查看表信息 +desc 表名; +#查看表中的字段 +select 字段1,字段2 from 表名 ; -- 可加where条件,模糊查询:where 字段名 like '%陈%' +``` + +6. 用 + +```mysql +#打开并使用某个数据库 +use 库名; +``` + + + +## MySQL远程连接 + +1. 查看MySQL配置文件 + + ```bash + whereis mysql + -- mysql: /usr/bin/mysql /usr/lib/mysql /etc/mysql /usr/share/man/man1/mysql.1.gz + ``` + +2. 进入/etc/mysql中查看.conf或.cnf文件后在具体配置中加入所需端口 + + ```bash + vim /etc/mysql/mysql.conf.d/mysqld.cnf --该文件最后需要加一行: port = 3306 保存退出 + ``` + +3. 在防火墙中开启3306端口 + + ```bash + systemctl status ufw # 查看防火墙状态 + ufw enable # 如果状态是inative则用该命令开启 + ufw allow 3306 #开启3306端口 + ufw status #查看有无添加3306端口 + ``` + +4. 在mysql中 + + ```mysql + show databases; -- 查看所有数据库 + use mysql; -- 使用该数据库 + select user,host from user; -- 查看user表 + update user set host='%' where user='root'; -- 其中将root用户的host改为% + exit -- 退出 + ``` + +5. 更新 + + ```bash + systemctl restart mysql + ``` + +6. 远程连接 + + ```bash + mysql -u root -p -h ip地址 + ``` + + +## MySQL备份与恢复 + +- ### 备份 + + 1. 单个备份 + + - 备份单个数据库 + + ```bash + # mysqldump -u root -p 数据库名 > 备份文件路径 + mysqldump -u root -p mysql_test > ./mysql_test_bak.sql + ``` + + - 备份单个表 + + ```bash + mysqldump -u root -p 库名 表名 > 备份文件路径 + ``` + + 2. 多个备份 + + - 备份所有数据库 + + ```bash + mysqldump -u -root -p --all-databases > 备份文件路径 + ``` + + - 备份多个数据库 + + ```bash + mysqldump -u root -p --databases 库1 库2 > 备份文件路径 + ``` + + - 备份多个表 + + ```bash + mysqldump -u root -p 库名 表1 表2 ... > 备份文件路径 + ``` + + 3. 其它备份 + + - 只备份数据库结构,不备份数据 + + ```bash + mysqldump -u root -p --no-data 数据库名 > 备份文件路径 + ``` + + - 只备份数据,不备份结构 + + ```bash + mysqldump -u root -p --no-create-info 库名 > 备份文件路径 + ``` + + - 备份数据库,压缩输出 + + ```bash + mysqldump -u root -p mysql_test | gzip > /tmp/test.sql.gz # 先压缩再备份 + gzip -d < /tmp/test.sql.gz | mysql -u root -p # gzip -d = gunzip + gunzip < /tmp/test.sql.gz | mysql -u root -p + ``` + + + +- ### 恢复(导入) + + 1. 在命令行中使用命令 + + ```bash + #如果恢复文件中不存在创建数据库名和使用数据库的代码,则先创建数据库,再将恢复的文件存入新建的库中 + mysqladmin -u root -p create 库名 + mysql -u root -p 库名 < 恢复文件的路径 + #如果恢复文件中有创建数据库和使用数据库的代码则可以省略库名 + mysql -u root -p < 恢复文件的路径 + ``` + + 2. 在mysql中创建库,并使用库,再进行恢复 + + ```mysql + create database 库名; + use 库名; + source 恢复文件地址; + ``` + + diff --git "a/41 \351\231\210\345\200\251\345\200\251/20240704_PostgreSQL.md" "b/41 \351\231\210\345\200\251\345\200\251/20240704_PostgreSQL.md" new file mode 100644 index 0000000000000000000000000000000000000000..2cc47f20b644ffe805396b3d5978b455b8182bfc --- /dev/null +++ "b/41 \351\231\210\345\200\251\345\200\251/20240704_PostgreSQL.md" @@ -0,0 +1,162 @@ +## PostgreSQL + +- ### 安装最新版本 + + 1. 更新列表 + + ```bash + apt update + ``` + + 2. 下载官网组件,将更新的最新版本加入下载列表中 + + ```bash + apt install -y postgresql-common + /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh + ``` + + 3. 更新后差看列表中是否有最新版,下载postgresql + + ```bash + apt update + apt search postgre* + apt install postgresql + ``` + + 4. 查看版本 + + ```bash + psql --version + ``` + +- ### 卸载干净 + + ```bash + apt --purge remove postgre* + apt autoremove postgre* + find / -name postgre* + 如何还有find命令查找后还有存留: + find / -name postgre* -exec rm -rf {} \; + ``` + + + +### 检查服务 + +1. 查看是否运行 + + ```bash + systemctl status postgresql + 在active中显示faild可用如下代码尝试开启 + systemctl start postgresql + ``` + +2. 查看目录权限是否为可读写执行 + + ```bash + ls -l /var/run/postgresql/.s.PGSQL.5432 + 如果没有权限可用如下方法修改 + chomod 777 /var/run/postgresql/.s.PGSQL.5432 + ``` + +### 远程连接需配置文件 + +1. 修改该服务的配置文件postgresql.conf + + ```bash + vim /etc/postgresql/15/main/postgresql.conf + 其中找到该行(注释的) + #listen_addresses = 'localhost' + 确保这个值设置为正确的 IP 地址,允许所有 IP 地址访问,可改为 + listen_addresses = '*' + 其中可以查看port端口号,一般情况下为 + port = 5432 + ``` + +3. 修改该服务的配置文件pg_hba.conf + + ```bash + vim /etc/postgresql/15/main/pg_hba.conf + 其中找到该行(注释的) + # IPv4 local connections: + #host all all 127.0.0.1/32 scram-sha-256 + 将其改为以下内容或添加该行 + host all all 0.0.0.0/0 md5 + ``` + +4. 修改好后重启postgresql + + ```bash + systemctl restart postgresql + ``` + +5. 开启防火墙端口 + + ```bash + ufw allow 5432 + ufw status + ``` + +6. 开启服务器中的安全组,添加对应的postgresql(5432)安全组 + +6. 使用psql命令登录PostgreSQL控制台 + + ```bash + 1. su postgres #登录默认用户,不用密码 + psql #进入执行命令 + \password # 设置密码 + 2. psql -U 用户名 -d 数据库名 -h #登录到具体数据库中 + psql -U postgres -d dbname -h + 3. #psql -p 端口号 -h ip地址 -U 用户名 + psql -p 5432 -h 47.115.204.225 -U postgres + ``` + +7. 更改密码 + + ```bash + ALTER USER postgres PASSWORD 'password'; + ``` + + +### 常用命令 + +- \h:查看SQL命令的解释 +- ?:查看psql命令列表 +- \t:列出所有数据库 +- \c 库名:连接其他数据库 +- \d:列出当前数据库的所有表格 +- \d 表名:列出某表结构 +- \du:列出所有用户 +- \e:打开文件编辑器 +- \conninfo:列出当前数据库和连接的信息 +- 增删改查的相关命令与MySQL相同 + +### 备份和恢复(导入) + +- **备份** + + - pg_basebackup是物理备份,可用于连续归档方案,不支持增量备份 + + - pg_rman是物理备份,支持全量、增量、归档备份 + + - pg_dump是逻辑备份,支持多种备份格式,只能备份单个数据库,不支持归档,恢复时需创建数据库 + + - pg_dumpall是逻辑备份,只支持sql文本,可备份所有数据库,不支持归档 + + + + ```bash + # pg_dump -U 用户名 -h IP地址 -d 数据库 -f 备份文件到路径 + pg_dump -U postgres -h 47.120.11.228 -d psql_50 -f ./psql50题_bak.sql + ``` + + + +- **恢复** + + - ```bash + # psql -h ip地址 -U 用户名 -f 导入的数据位置 + psql -h 47.120.11.228 -U postgres -f ./psql50题.sql + ``` + + \ No newline at end of file diff --git "a/41 \351\231\210\345\200\251\345\200\251/imgs/apache2" "b/41 \351\231\210\345\200\251\345\200\251/imgs/apache2" new file mode 100644 index 0000000000000000000000000000000000000000..8b57d4adfc38550b446e14dcc4a866110c417959 Binary files /dev/null and "b/41 \351\231\210\345\200\251\345\200\251/imgs/apache2" differ