diff --git "a/46\344\273\230\350\202\226\350\202\226/24-0703 \347\250\213\345\272\217\345\256\211\350\243\205\346\226\271\345\274\217\344\270\216\346\225\260\346\215\256\345\272\223\346\223\215\344\275\234.md" "b/46\344\273\230\350\202\226\350\202\226/24-0703 \347\250\213\345\272\217\345\256\211\350\243\205\346\226\271\345\274\217\344\270\216\346\225\260\346\215\256\345\272\223\346\223\215\344\275\234.md" new file mode 100644 index 0000000000000000000000000000000000000000..52b1027fcd9d55aedf9683efbe6b4e1aab7f6669 --- /dev/null +++ "b/46\344\273\230\350\202\226\350\202\226/24-0703 \347\250\213\345\272\217\345\256\211\350\243\205\346\226\271\345\274\217\344\270\216\346\225\260\346\215\256\345\272\223\346\223\215\344\275\234.md" @@ -0,0 +1,183 @@ +### 程序安装方式 + +1. apt包管理工具,自动在线安装,自动安装需要的一些依赖包 + +2. 手动下载的安装包,压缩包等,要自己安装依赖包 + - wget http://www.xxx.com/vim 直接下载到服务器 + - 先下载到电脑上,用scp 上传到服务器 + - sftp -->put get + - tar.gz... .deb 二进制的安装包 .exe + +3. 下载源码,编辑安装 + + + +### 数据库操作 + +1. 创建数据库 +2. 刷经典50题力扣 +3. 生成sql脚本文件,如何在linux导入sqL文件,执行它 +4. 如何备份和恢复数据库 +5. 让数据库可以远程登录 +6. 数据库分两种mysql-server + - 服务端:提供数据库服务那端mysql-server + - 客户端:连接服务器并使用数据库的那一端cmd +7. 如何修改端口 + +### 代码 + +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 列=''; + ``` + + + + ## MySQL远程连接 + + 1. 在登录mysql后,使用以下命令 + + ```bash + show databases; + use mysql; + select host,user from user; + update user set host = '%' where user = 'root'; + flush privileges; + ``` + + + + 2. 开启端口 + + ```bash + ufw status + ufw allow 3306/tcp + whereis mysql + cd /etc/mysql/ + vim mysql.conf.d/mysqld.cnf + 最后一行插入 port = 3306 + systemctl restart mysql + systemctl status mysql + ``` + + + + 3. 远程登录 + + ```bash + mysql -u root -p -h 47.113.195.42 + ``` + +## sql脚本 + +1. 新建一个文本,把内容复制进去,改txt 为sql + + ``` + mysql_test.sql + ``` + +2. 在cmd中使用scp 上传 + + ```bash + scp mysql_test.sql root@47.113.195.42:/home + home为临时文件 + ``` + +3. 登录mysql后, + + ```bash + source /home/mysql_test.sql 将sql导入到mysql中 + ``` + +4. 检查 + + ``` + show databases; + show tables; + ``` + + + +## 备份与恢复数据库 + diff --git "a/46\344\273\230\350\202\226\350\202\226/24-0703debian\345\256\211\350\243\205\346\225\260\346\215\256\345\272\223.md" "b/46\344\273\230\350\202\226\350\202\226/24-0703debian\345\256\211\350\243\205\346\225\260\346\215\256\345\272\223.md" new file mode 100644 index 0000000000000000000000000000000000000000..8c52b7a10930b005d5516b43c6eb6e130b542cae --- /dev/null +++ "b/46\344\273\230\350\202\226\350\202\226/24-0703debian\345\256\211\350\243\205\346\225\260\346\215\256\345\272\223.md" @@ -0,0 +1,52 @@ +## Debian安装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.18-1_all.deb -P /tmp + ``` + + + +3. 安装 MySQL 的官方仓库配置文件,并选择 MySQL 8 的仓库。 + + ```bash + sudo dpkg -i /tmp/mysql-apt-config_0.8.18-1_all.deb + ``` + + + +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 + ``` + + \ No newline at end of file diff --git "a/46\344\273\230\350\202\226\350\202\226/24-0704\346\225\260\346\215\256\345\272\223\345\244\207\344\273\275\344\270\216\350\277\230\345\216\237.md" "b/46\344\273\230\350\202\226\350\202\226/24-0704\346\225\260\346\215\256\345\272\223\345\244\207\344\273\275\344\270\216\350\277\230\345\216\237.md" new file mode 100644 index 0000000000000000000000000000000000000000..4a9fce65f641be3f6800caa6811e882530ecd894 --- /dev/null +++ "b/46\344\273\230\350\202\226\350\202\226/24-0704\346\225\260\346\215\256\345\272\223\345\244\207\344\273\275\344\270\216\350\277\230\345\216\237.md" @@ -0,0 +1,88 @@ +### 数据库备份与还原 + +1. 逻辑备份:默认情况下是,即备份结构又备份数据 + + 1. mysqldump: 单库备份,不会包含建库语句。所以恢复时要先指定数据库。 + + 1. 要么在恢复时,先指定好数据库(这个数据可以任意) + + ```bash + mysqldump -u root -p test > /tmp/test.sql + ``` + + 2. 指定多个库的备份,已经包含建库语句了,所以恢复时不指定数据库 + + 1. --databases 库1 库2 .. + + ```bash + mysqldump -u root -p --databases test test2 > /tmp/test.sql + ``` + + 3. 备份所有数据库 + + ```bash + mysqldump -u root -p --all-databases > /tmp/all.sql + ``` + + 4. 备份单个表 + + ```bash + # mysqldump -u 用户名 -p 库名 表名> 备份的文件路径 + mysqldump -u root -p test stu > /tmp/stu.sql + ``` + + 5. 备份多个表 + + ```bash + # mysqldump -u 用户名 -p 库名 表名1 表2 .. > 备份的文件路径 + mysqldump -u root -p test stu1 stu2 > /tmp/stu.sql + ``` + + 6. 只备份数据库结构,但不备份数据 + + ```bash + mysqldump -u root -p --no-data test > /tmp/data.sql + ``` + + 7. 只备份数据,但不备份结构 + + ```bash + mysqldump -u root -p --no-create-info test > /tmp/data.sql + ``` + + 8. 备份数据库,压缩输出 + + ```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 + ``` + + + +2. 还原(导入) + + 1. mysql -u root -p 数据库名 < 要恢复的文件的路径 (前提是这个数据库名要真实存在) + + ```bash + mysql -u root -p test < /tmp/test1.sql + ``` + + + + 2. 登录mysql后,先选择要恢复的数据库,再用source 要恢复的文件来恢复 + + ```bash + use test1; + source /tmp/test.sql + ``` + + + +3. 商业的备份工具 + +4. phpmyadmin + +5. 第三方的连接客户端也可以备份 + +6. 想想如何实现自动备份(周期任务,预习shell脚本的写法,全量和增量的备份) \ No newline at end of file diff --git "a/46\344\273\230\350\202\226\350\202\226/24-0706\345\256\211\350\243\205postgresql.md" "b/46\344\273\230\350\202\226\350\202\226/24-0706\345\256\211\350\243\205postgresql.md" new file mode 100644 index 0000000000000000000000000000000000000000..90d9b23bff44d691ef4602cc1ca540c2700cdd40 --- /dev/null +++ "b/46\344\273\230\350\202\226\350\202\226/24-0706\345\256\211\350\243\205postgresql.md" @@ -0,0 +1,111 @@ +## 安装postgresql + +一:下载 + +1. 找到postgresql官网,linux-->debian + + ```bash + sudo apt install -y postgresql-common + sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh + 更新 sudo apt update + 下载 sudo apt install postgresql + 查看 whereis postgresql + 查看版本 psql --version + ``` + + + +二:远程连接配置 + +1. postgresql.conf文件 + + ```bash + cd /etc/postgresql/16/main + vim postgresql.conf + 改 listen_addresses = ‘*’ + ``` + + + +2. pg_hba.conf文件 + + ```bash + cd /etc/postgresql/16/main + vim pg_hba.conf + 在IPV4下写host all all 0.0.0.0/0 scram-sha-256 + scram-sha-256为一种加密方式 + ``` + +三:卸载 + +```bash +apt --purge remove postgreql +apt autoremove postgresql +find / -name postgre* +find / -name postgre* -exec rm -rf {} \; +``` + +四:操作命令 + +1. 安装完postgresql后, +2. su postgres 切换postgres用户 +3. psql +4. \ l 列出所有数据库 +5. create database 库名 +6. \ c 连接数据库 相当于MySQL中use +7. create table 表名(); +8. \ dt 显示表 +9. \ d 表名 查看表 + +注意:其余增删改查与mysql类似 + +## 作业 + +1. 如何把50题的sql文件导入postgresql + + ```mysql + 1. 在cmd中使用scp 上传 + scp mysql_test.sql root@47.113.195.42:/home + home为临时文件 + 2. 在cmd中时使用sftp上传,要在sql文件所在位置开启cmd + sftp root@47.113.195.42 + sftp> lls查看在这个目录下所有文件 + sftp> put mysql.sql + 3. root 里面 + psql -U postgres(用户名) -h 47.113.195.42 -f ./mysql50题.sql + 4. 进入mysql50题.sql文件中,改use 库名为 \c 库名 + 5.psql -U postgres -h 47.113.195.42 + ``` + +2. 备份还原postgresql + + ```mysql + # pg_dump -U 用户名 -h IP地址 -d 数据库 -f 备份文件到路径 + pg_dump -U postgres -h 47.120.11.228 -d psql_50 -f ./psql50题_bak.sql + # psql -h ip地址 -U 用户名 -f 导入的数据位置 + psql -h 47.120.11.228 -U postgres -f ./psql50题.sql + ``` + + + +3. 生成1000万条数据,并记录时间 + + ```mysql + create database userinfo; + + create table users( + id serial primary key, + name varchar(50) + ); + + WITH series AS ( + SELECT generate_series(1, 10000000) AS id + ) + INSERT INTO users (id, name) + SELECT + id, + 'user' || id::text AS name + FROM series; + ``` + + \ No newline at end of file