diff --git "a/42 \345\210\230\350\213\217\350\220\214/20240702_\345\271\262\345\207\200\345\215\270\350\275\275apache\346\226\271\346\263\225.md" "b/42 \345\210\230\350\213\217\350\220\214/20240702_\345\271\262\345\207\200\345\215\270\350\275\275apache\346\226\271\346\263\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..b493173e96d9b9105a9cb8f45a21606b589663d9 --- /dev/null +++ "b/42 \345\210\230\350\213\217\350\220\214/20240702_\345\271\262\345\207\200\345\215\270\350\275\275apache\346\226\271\346\263\225.md" @@ -0,0 +1,26 @@ +如果你需要强制重新下载Apache并确保之前安装的版本被完全移除,可以遵循以下步骤。这里以Debian或基于Debian的系统(如Ubuntu)为例,使用APT包管理器来进行操作: +完全卸载Apache: + +1. 首先,彻底卸载Apache,包括配置文件和依赖。使用以下命令: + +```bash +Bash1sudo apt-get purge apache2* +``` + +注意:这里的星号(*)是一个通配符,它会匹配所有以apache2开头的包,从而确保相关的配置文件也被清除。但是,务必谨慎使用,确保不会误删其他重要文件。 + +2. 更新软件包列表并清理:更新你的软件包列表,并使用autoremove命令清理掉可能因卸载Apache而不再需要的依赖包: + + ```bash + Bash1sudo apt-get update + 2sudo apt-get autoremove + ``` + +3. 重新下载并安装Apache:接下来,重新下载并安装Apache。虽然APT在安装时通常会获取最新版本,但为了确保获取的是最新版本,你可以先更新软件包列表,然后安装。使用以下命令: + + ```bash + Bash1sudo apt-get install apache2 + ``` + + 如果你确实需要从源代码重新编译安装以获得绝对的控制权,那么首先需要下载Apache源代码,解压,配置,编译,安装。但这通常比使用APT复杂得多,并且对于大多数用户来说,使用APT安装就足够了,也更方便维护。 + 通过上述步骤,你不仅清除了旧版本的Apache,还重新下载并安装了最新的稳定版本。记得在执行任何删除操作之前备份重要的配置文件,以防万一。 \ No newline at end of file diff --git "a/42 \345\210\230\350\213\217\350\220\214/20240703_Deain\345\256\211\350\243\205MYSQL\345\217\212MySQL\347\224\250\346\263\225.md" "b/42 \345\210\230\350\213\217\350\220\214/20240703_Deain\345\256\211\350\243\205MYSQL\345\217\212MySQL\347\224\250\346\263\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..1fa356799e4fdf12145e3b438a158bfbb6437f40 --- /dev/null +++ "b/42 \345\210\230\350\213\217\350\220\214/20240703_Deain\345\256\211\350\243\205MYSQL\345\217\212MySQL\347\224\250\346\263\225.md" @@ -0,0 +1,353 @@ +### 程序安装 + +1. apt包管理工具,自由在线安装需要的一些依赖包 +2. 手动下载的安装包、压缩包等(要自己安装依赖包) + - 直接下载到服务器 wget + - 下载到本地再上传到服务器(用scp、sftp) + - tar.gz 二进制的安装包 dpkg +3. 下载源码再编译安装 + + + +#### Debain安装MYSQL步骤: + +1. 更新系统软件包并安装必要的依赖包。在终端中执行以下命令: + + ```bash + sudo apt update -y + sudo apt install -y wget gnupg + ``` + +2. 下载 MySQL 的官方仓库配置文件,并将其保存到 `/tmp` 目录中。在终端中执行以下命令: + + ```bash + wget https://repo.mysql.com/mysql-apt-config_0.8.30-1_all.deb -P /tmp + ``` + +3. 安装 MySQL 的官方仓库配置文件,并选择 MySQL 8 的仓库。在终端中执行以下命令 + + ```bash + sudo dpkg -i /tmp/mysql-apt-config_0.8.30-1_all.deb + ``` + + 将打开一个交互式对话框,让选择 MySQL 的版本和其他组件。按照以下步骤操作: + + - 选择 `MySQL Server & Cluster`,按回车键。 + - 选择 `mysql-8.0`,按回车键。 + - 选择 `Ok`,按回车键。 + - 选择 `Apply`,按回车键。 + +4. 安装 MySQL 8 的软件包。在终端中执行以下命令: + + ```bash + sudo apt update -y + sudo apt install -y mysql-server + ``` + + 这时会出现一个设置密码的界面 + + - 输入密码 + - 再次输入密码(确认密码) + +5. 启动 MySQL 服务,并设置开机自启动。在终端中执行以下命令: + + ```bash + sudo systemctl start mysql + sudo systemctl enable mysql + ``` + +6. 查看 MySQL 服务的状态,确保它正在运行。在终端中执行以下命令: + + ```bash + sudo systemctl status mysql + ``` + +7. 登录 MySQL 并修改密码。在终端中执行以下命令: + + ```bash + mysql -u root -p + ``` + + 会出现一个输入密码的界面 + + - 输入刚刚自己设置的密码 + +8. 在 MySQL 提示符下,执行以下命令,修改密码: + + ```bash + ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; + ``` + + 如果修改成功,您会看到类似以下的输出: + + ```bash + Query OK, 0 rows affected (0.01 sec) + ``` + + 退出 MySQL 提示符,返回终端: + + ```bash + exit + ``` + +9. 重新登录 MySQL,使用新的密码。在终端中执行以下命令: + + ```bash + mysql -u root -p + # 输入刚刚更改的新密码进行登录 + ``` + + +#### MYSQL8 配置远程访问 + +1. 使用root登录MySQL + + ```bash + mysql -u root -p + # 输入刚刚更改的新密码进行登录 + ``` + +2. 使用mysql数据库 + + ```sql + use mysql; + ``` + +3. 查看root账号权限 + + ```sql + select user,host from user; + ``` + + ![20240703_mysql权限](./img/20240703_mysql权限.png) + + - 如果root不是%,使用语句更新 + + ```sql + update user set host='%' where user='root'; + ``` + +4. 开启3306端口访问权限 + + - 开启防火墙(开机自启动) + + ```sql + ufw enable + ``` + + - 开启3306端口 + + ```sql + ufw allow 3306 + ``` + + - 查看防火墙状态 + + ```sql + ufw status + ``` + + - 开启ssh远程连接 + + ```bash + cd /etc/ssh + vim sshd_config + #圈出来那行取消注释 + ``` + + ![20240703_ssh远程连接](./img/20240703_ssh远程连接.png) + + - 进入MySQL编辑配置文件 + + ```bash + cd /etc/mysql/mysql.conf.d/ + vim mysqld.cnf + #进入配置文件添加圈出来的那行 + ``` + + ![20240703_mysql配置文件](./img/20240703_mysql配置文件.png) + +5. 重启MySQL + + ```bash + systemctl restart mysql + ``` + +6. 远程登陆连接mysql + + ```bash + #mysql -u root -p -h ip地址 + mysql -u root -p -h 47.120.33.3 + ``` + + + +#### 数据库操作MYSQL + +##### 库管理: + +1. 登录数据库 + + ```bash + mysql -u root -p + # 输入密码 + ``` + +2. 创建数据库 + + ```sql + creat database 库名; + ``` + +3. 使用数据库 + + ```sql + use 库名; + ``` + +4. 查看当前使用的数据库 + + ```sql + select database (); + ``` + +5. 删除数据库 + + ```sql + drop database 库名; + ``` + +##### 表管理: + +1. 创建数据表 + + ```sql + creat table 表名( + id int auto_increment primary key, + name varchar(10) not null, + sex char(1), + ); + #auto_increment 自增 + #primary key 主键 + ``` + +2. 查看表结构 + + ```sql + desc 表名; + ``` + +3. 修改表结构 + + ```sql + alter table 表名 add column 列名 VARCHAR(100); + ``` + +4. 删除数据表 + + ```sql + drop table 表名; + ``` + + + +##### 数据操作 + +1. 插入数据 + + ```sql + insert into 表名(列1,列2) values ('值1','值2'); + ``` + +2. 更新数据 + + ```sql + update 表名 set 列='' where 列=''; + #更新指定列的值 where 条件 + ``` + +3. 删除数据 + + ```sql + delete from 表名 where 列=''; + ``` + + + +##### 查询语句 + +1. 查询所有记录 + + ```sql + select * from 表名; + ``` + +2. 查询特定列表 + + ```sql + selecct 列1,列2 from 表名; + ``` + +3. 查询特定条件 + + ```sql + select * from 表名 where 指定列='值'; + ``` + +4. 查询去重 + + ```sql + select distinct 列名 from 表名 + #查询该表指定列去除重复项 + ``` + +5. 排序 + + ```sql + select * from 表名 order by 列名 asc + #asc:升序 将该表指定列按升序排序 + #desc:降序 + ``` + + + +#### 作业: + +1. 生成sql脚本文件(作业),如何在linux导入sql文件,执行它, + + ```sql + #cmd 终端上传文件到服务器 + scp mysql_test.sql root@47.120.33.3:/home + #打开服务器远程登陆mysql + mysql -u root -p -h 47.120.33.3 + #导入刚刚上传的数据库 + source /home/mysql_test.sql + #查看数据库是否存在 + show databases; + #查看数据表是否存在 + show tables; + ``` + + ![20240703_导入的库和表](./img/20240703_导入的库和表.png) + +2. 如何备份和恢复数据库 < > + + - 备份 + + ```bash + mysqldump -u root -p mysql_test > /home/mysql_testbak.sql + ``` + + - 恢复 + + ```bash + mysql -u root -p mysql_test < /home/mysql_testbak.sql + ``` + + + +3. 数据库分 + + 1. 服务端:提供数据库服务那一端。mysql-server + 2. 客户端: 连接服务器并使用数据库的那一端。cmd + diff --git "a/42 \345\210\230\350\213\217\350\220\214/20240704_ \346\225\260\346\215\256\345\272\223\347\232\204\345\244\207\344\273\275\344\270\216\350\277\230\345\216\237.md" "b/42 \345\210\230\350\213\217\350\220\214/20240704_ \346\225\260\346\215\256\345\272\223\347\232\204\345\244\207\344\273\275\344\270\216\350\277\230\345\216\237.md" new file mode 100644 index 0000000000000000000000000000000000000000..04fb499f11337f90b712ea26e36597431f2d4c2d --- /dev/null +++ "b/42 \345\210\230\350\213\217\350\220\214/20240704_ \346\225\260\346\215\256\345\272\223\347\232\204\345\244\207\344\273\275\344\270\216\350\277\230\345\216\237.md" @@ -0,0 +1,135 @@ +#### 备份 + +默认情况下是既备份结构又备份数据 + +1. 单个备份:不包含建库语句,所以恢复时要先指定数据库 + + - 要么在恢复时,先指定好数据库(这个数据可以任意) + + ```bash + mysqldump -u root -p 库名 > 备份文件路径 + ``` + + - 要么添加建库语句 + +2. 指定多个库的备份,已经包含了建库语句,所以恢复时不指定数据库 + + - --databases 库1 库2 + + ```bash + mysqldump -u root -p --databases 库1 库2 > 备份文件路径 + #例: + mysqldump -u root -p --database mysql_test1 mysql_test2 > /tmp/test.sql + ``` + +3. 备份所有库 + + - --all-databases + + ```bash + mysqldump -u root -p --all-databases > 备份文件路径 + #例: + mysqldump -u root -p --all-databases >/tmp/all.sql + ``` + +4. 备份单个表 + + ```bash + mysqldump -u root -p 库名 表名 > 备份文件路径 + ``` + +5. 备份多个表 + + ```bash + mysqldump -u root -p 库名 表1 表2... > 备份文件路径 + #例: + mysqldump -u root -p mysql_test course student > /tmp/test.sql + ``` + +6. 只备份数据库结构,不备份数据 + + - --no-data + + ```bash + mysqldump -u root -p --no-data 库名 > 备份文件路径 + ``` + +7. 只备份数据,不备份结构 + + - --no-create-info + + ```bash + mysqldump -u root -p --no-create-info 库名 > 备份文件路径 + ``` + +8. 备份数据库,压缩输出 + + - 备份压缩 + + ```bash + mysqldump -u root -p 库名 | gzip > 备份文件路径 + #例: + mysqldump -u root -p mysql_test | gzip > /tmp/test.sql.gz + ``` + + - 解压缩(并删除压缩包) + + ```bash + gzip -d < /tmp/test.sql.gz | mysql -u root -p + #gzip -d = gunzip + ``` + + - 解压缩(并保留压缩包) + + ```bash + gzip -dk < /tmp/test.sql.gz | mysql -u root -p + ``` + + + +#### 还原(导入) + +1. 还原 + + ```bash + mysql -u root -p 库名 < 要恢复的文件 (前提是该库名真实存在) + #例: + mysql -u root -p mysql_test < /tmp/test.sql + ``` + +2. 导入 + + - 登录mysql后,先选择要恢复的数据库,在用source来恢复要恢复的文件 + + ```bash + use mysql_test; + source /tmp/test.sql + ``` + + +#### 作业: + +1. 商业的备份工具 + + - **MySQL Enterprise Backup** :是 Oracle 提供的一种商业备份解决方案,专为 MySQL 数据库设计。它能够进行在线热备份,支持增量备份和点恢复,提供高性能的数据压缩,并且可以与 MySQL Enterprise Manager 集成,用于监控和管理备份过程。 + - **MySQL Workbench**: 虽然 MySQL Workbench 主要是一个图形化的数据库管理工具,但它也可以用于创建和恢复数据库备份。它不是专门的备份工具,但在一些场景下可以方便地进行数据库的导出和导入。 + - **MySQL InnoDB Cluster** :虽然这不是一个传统的备份工具,但 InnoDB Cluster 提供了高可用性和灾难恢复功能,可以通过复制数据到多个节点来实现数据保护。它使用 Group Replication 技术来同步数据,可以作为备份策略的一部分。 + - 除了官方的商业备份工具之外,还有许多第三方的商业备份解决方案,它们可以集成到 `MySQL `和` Debian`环境中,提供自动化备份、云备份、加密等功能。这些第三方工具可能包括:`Barracuda Backup`, `Veeam Backup & Replication`,` Acronis Backup` 等 + +2. 了解`phpmyadmin` + + - `phpMyAdmin `是一个非常流行的基于 Web 的数据库管理工具,主要用于管理 MySQL 和 MariaDB 数据库服务器。它使用 PHP 编程语言构建,允许用户通过网页浏览器界面进行数据库操作,而无需直接编写 SQL 语句或使用命令行工具。 + + - `phpMyAdmin `的主要功能包括: + - **数据库管理**:创建、修改和删除数据库,以及管理数据库的用户和权限。 + - **表格操作**:创建、修改、复制和删除表格,管理字段和索引。 + - **数据操作**:插入、编辑和删除数据记录,批量上传和下载数据。 + - **SQL查询**:执行自定义 SQL 查询并查看结果。 + - **数据导入导出**:从文件导入数据到数据库,或将数据库的内容导出为文件。 + - **数据备份和恢复**:创建数据库的完整或部分备份,以及从备份文件恢复数据。 + - **服务器管理**:监视服务器状态和性能,管理服务器级的设置和参数。 + - `phpMyAdmin` 的优势在于它的易用性,特别是对于那些不熟悉 SQL 语法或偏好图形界面的用户。它也支持多语言,可以在不同的操作系统和服务器环境下运行,只要服务器上安装了 PHP 和 web 服务器软件(如 Apache 或 Nginx) + +3. 第三方的连接客户端也可以备份 + +4. 想想如何实现自动备份(周期任务,预习shell脚本的写法,全量和增量的备份) diff --git "a/42 \345\210\230\350\213\217\350\220\214/20240704_postgresql\344\270\213\350\275\275.md" "b/42 \345\210\230\350\213\217\350\220\214/20240704_postgresql\344\270\213\350\275\275.md" new file mode 100644 index 0000000000000000000000000000000000000000..dc1cf8c1989ebaf0b01dbefb2a3579a283a7df79 --- /dev/null +++ "b/42 \345\210\230\350\213\217\350\220\214/20240704_postgresql\344\270\213\350\275\275.md" @@ -0,0 +1,119 @@ +#### postgresql16下载 + +1. 进入`postgresql`官网 https://www.postgresql.org/download/linux/debian/ + +![20240704_postgresql官网下载](./img/20240704_postgresql官网下载.png) + +2. copy 复制,打开服务器创建脚本文件并运行 + + ```bash + vim sql.bash + #将刚刚复制的粘贴进去 保存并退出 + sh sql.bash + # 运行脚本文件(下载postgresql16),等待下载完成 + rm sql.bash + #删除刚刚写的脚本文件 + ``` + +3. 开启postgresql + + ```bash + systemctl start postgresql + ``` + +4. 设置开机自启动 + + ```bash + systemctl enable postgresql + ``` + +5. 查看状态 + + ```bash + systemctl status postgresql + #显示active就是已开启了 + ``` + +#### postgresql16配置远程登录访问 + +1. 修改`postgresql.conf`(版本:16) + + - 找到`postgresql.conf`文件(通常位于`/etc/postgresql/版本/main/`下),并进行编辑 + + ```bash + vim /etc/postgresql/版本/main/postgresql.conf + ``` + + - 找到 + + ```bash + #listen_addresses = 'localhost' + ``` + + - 修改为 + + ```bash + listen_addresses = '*' + # 允许所有IP地址连接到数据库 + ``` + +2. 修改`pg_hba.conf` + + - 找到`pg_hba.conf`文件,并进行编辑 + + ```bash + vim /etc/postgresql/版本/main/pg_hba.conf + ``` + + - 在文件末尾添加以下行,允许所有IP地址通过密码连接: + + ```bash + #在IPv4那添加 + host all all 0.0.0.0/0 md5 + ``` + + ![20240704_修改pg_hba.conf文件](./img/20240704_修改pg_hba.conf文件.png) + +3. 设置登录`postgresql`的密码 + + ```bash + ALTER USER postgres PASSWORD '密码'; + ``` + +4. 以 `postgres` 用户的权限启动 `psql` 工具 + + ```bash + sudo -u postgres psql + ``` + +5. 开启防火墙端口 + + ```bash + ufw allow 5432 + ``` + + - 查看防火墙状态 + + ```bash + ufw status + #查看是否添加成功 + ``` + + - 打开阿里云官网安全组添加端口 + + ![20240704_阿里云5432端口](./img/20240704_阿里云5432端口.png) + +6. 重启`postgresql` + + ```bash + systemctl restart postgresql + ``` + +7. 远程登录`postgresql` + + ```bash + psql -p 5432 -h IP地址 -U postgres + #根据提示输入刚刚设置的密码 + ``` + + \ No newline at end of file diff --git "a/42 \345\210\230\350\213\217\350\220\214/img/20240703_mysql\346\235\203\351\231\220.png" "b/42 \345\210\230\350\213\217\350\220\214/img/20240703_mysql\346\235\203\351\231\220.png" new file mode 100644 index 0000000000000000000000000000000000000000..e67be6817c6ac3dbc5b5694e5b278bb796b7d75c Binary files /dev/null and "b/42 \345\210\230\350\213\217\350\220\214/img/20240703_mysql\346\235\203\351\231\220.png" differ diff --git "a/42 \345\210\230\350\213\217\350\220\214/img/20240703_mysql\351\205\215\347\275\256\346\226\207\344\273\266.png" "b/42 \345\210\230\350\213\217\350\220\214/img/20240703_mysql\351\205\215\347\275\256\346\226\207\344\273\266.png" new file mode 100644 index 0000000000000000000000000000000000000000..ac8e616f5665d769534ef9261639ff4494c3f1de Binary files /dev/null and "b/42 \345\210\230\350\213\217\350\220\214/img/20240703_mysql\351\205\215\347\275\256\346\226\207\344\273\266.png" differ diff --git "a/42 \345\210\230\350\213\217\350\220\214/img/20240703_ssh\350\277\234\347\250\213\350\277\236\346\216\245.png" "b/42 \345\210\230\350\213\217\350\220\214/img/20240703_ssh\350\277\234\347\250\213\350\277\236\346\216\245.png" new file mode 100644 index 0000000000000000000000000000000000000000..02899962b1667c194fc8b5f0d8eb46a5e6806040 Binary files /dev/null and "b/42 \345\210\230\350\213\217\350\220\214/img/20240703_ssh\350\277\234\347\250\213\350\277\236\346\216\245.png" differ diff --git "a/42 \345\210\230\350\213\217\350\220\214/img/20240703_\345\257\274\345\205\245\347\232\204\345\272\223\345\222\214\350\241\250.png" "b/42 \345\210\230\350\213\217\350\220\214/img/20240703_\345\257\274\345\205\245\347\232\204\345\272\223\345\222\214\350\241\250.png" new file mode 100644 index 0000000000000000000000000000000000000000..7db410e52528c2a245f094bf02017d65d3a03430 Binary files /dev/null and "b/42 \345\210\230\350\213\217\350\220\214/img/20240703_\345\257\274\345\205\245\347\232\204\345\272\223\345\222\214\350\241\250.png" differ diff --git "a/42 \345\210\230\350\213\217\350\220\214/img/20240704_postgresql\345\256\230\347\275\221\344\270\213\350\275\275.png" "b/42 \345\210\230\350\213\217\350\220\214/img/20240704_postgresql\345\256\230\347\275\221\344\270\213\350\275\275.png" new file mode 100644 index 0000000000000000000000000000000000000000..8c51dd451ec88db89c09bb11051fead3f1844d55 Binary files /dev/null and "b/42 \345\210\230\350\213\217\350\220\214/img/20240704_postgresql\345\256\230\347\275\221\344\270\213\350\275\275.png" differ diff --git "a/42 \345\210\230\350\213\217\350\220\214/img/20240704_\344\277\256\346\224\271pg_hba.conf\346\226\207\344\273\266.png" "b/42 \345\210\230\350\213\217\350\220\214/img/20240704_\344\277\256\346\224\271pg_hba.conf\346\226\207\344\273\266.png" new file mode 100644 index 0000000000000000000000000000000000000000..020faacb02d7ef75ea052e99ddcb8962faf908b2 Binary files /dev/null and "b/42 \345\210\230\350\213\217\350\220\214/img/20240704_\344\277\256\346\224\271pg_hba.conf\346\226\207\344\273\266.png" differ diff --git "a/42 \345\210\230\350\213\217\350\220\214/img/20240704_\351\230\277\351\207\214\344\272\2215432\347\253\257\345\217\243.png" "b/42 \345\210\230\350\213\217\350\220\214/img/20240704_\351\230\277\351\207\214\344\272\2215432\347\253\257\345\217\243.png" new file mode 100644 index 0000000000000000000000000000000000000000..b791e829eabdac35f010766f4404438e2023a24f Binary files /dev/null and "b/42 \345\210\230\350\213\217\350\220\214/img/20240704_\351\230\277\351\207\214\344\272\2215432\347\253\257\345\217\243.png" differ