diff --git "a/\346\262\210\351\276\231/20240701_mysql.md" "b/\346\262\210\351\276\231/20240701_mysql.md" new file mode 100644 index 0000000000000000000000000000000000000000..92fd48ce304c7ea9bf072fed5bc6071d1979e8c8 --- /dev/null +++ "b/\346\262\210\351\276\231/20240701_mysql.md" @@ -0,0 +1,130 @@ +### 本地上传安装包 +` scp D:\mysql-client_8.4.0-1debian12_amd64.deb root@192.168.163.66:\root ` + +### 如何在 Debian 12 上安装 MySQL + +``` + +1.命令界面下使用wget命令下载最新的发行包: wget https://repo.mysql.com/mysql-apt-config_0.8.29-1_all.deb + +2.进行安装 dpkg -i mysql-apt-config_0.8.29-1_all.deb + +3. 更新软件包,并安装MySQL: + apt update + apt insatll mysql-server + + +``` + +


+ + +### 修改mysql用户密码 +``` +1. ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; + +2. 修改密成功会返回0 rows affected" + + 2.1 当使用 ALTER USER 或 SET PASSWORD 命令来修改用户密码时,MySQL内部的操作方式可能导致影响行数的计算为0。这是因为修改密码操作并不实际涉及修改表中的行,而是更新用户权限和凭据信息。 + +3. 刷新权限(可选):执行 FLUSH PRIVILEGES; 命令以确保最新的权限更改生效。 + + +4(看情况). 重启MySQL服务:一般情况下,修改用户密码后并不需要重启MySQL服务。service mysql stop +``` + + +


+ + +要允许MySQL远程登录,需要进行以下步骤: + +`查看用户信息:SELECT User, Host, authentication_string FROM mysql.user;` + +### 在MySQL服务器上配置 + +1. **编辑MySQL配置文件**: + - 使用管理员权限登录到MySQL服务器。 + - 找到并编辑MySQL的配置文件,通常在 `/etc/mysql/mysql.conf.d/mysqld.cnf` 或者 `/etc/mysql/my.cnf` 中。 + +2. **绑定地址**: + - 找到 `bind-address` 参数,并将其设置为MySQL服务器所在的IP地址,或者设置为 `0.0.0.0` 表示允许所有IP地址连接。如果你希望仅允许特定IP地址连接,可以指定具体的IP地址。 + + ```ini + bind-address = 0.0.0.0 + ``` + + 这一步允许MySQL接受来自所有IP地址的连接。 + +3. **重启MySQL服务**: + - 在修改了配置文件后,保存更改并重启MySQL服务以使更改生效: + + ```bash + sudo systemctl restart mysql + ``` + +### 在MySQL中配置远程用户访问 + +4. **创建远程登录用户**: + - 登录到MySQL服务器的命令行界面: + + ```bash + mysql -u root -p + ``` + + - 输入密码后,使用以下SQL语句创建一个允许远程连接的用户。替换 `remote_user` 和 `password` 为你希望设置的用户名和密码,并替换 `remote_ip` 为允许连接的远程IP地址或者 `%` 表示允许从任何IP连接。 + + ```sql + CREATE USER 'remote_user'@'remote_ip' IDENTIFIED BY 'password'; + ``` + + 例如,允许从任何IP地址连接: + + ```sql + CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password'; + ``` + +5. **授予远程登录用户权限**: + - 授予新创建用户所需的权限。例如,授予该用户对所有数据库的完全访问权限: + + ```sql + GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; + ``` + + 或者,仅授予特定数据库的权限: + + ```sql + GRANT ALL PRIVILEGES ON database_name.* TO 'remote_user'@'%'; + ``` + +6. **刷新权限**: + - 执行以下命令以使权限更改生效: + + ```sql + FLUSH PRIVILEGES; + ``` + +### 在防火墙中允许MySQL端口 + +7. **配置防火墙**: + - 如果MySQL服务器有防火墙,确保允许MySQL默认的端口(通常是3306)通过防火墙。 + + ```bash + sudo ufw allow 3306/tcp + ``` + + 替换 `3306` 为你配置的MySQL端口号。 + +### 测试远程连接 + +8. **测试远程连接**: + - 现在可以从远程计算机使用MySQL客户端连接到MySQL服务器: + + ```bash + mysql -u remote_user -h mysql_server_ip -p + ``` + + 其中 `remote_user` 是你创建的远程用户,`mysql_server_ip` 是MySQL服务器的IP地址或主机名。然后输入密码进行连接。 + +通过这些步骤,你应该可以成功设置并测试远程连接到MySQL服务器了。确保在允许远程访问时考虑安全性,并根据实际需求和网络环境进行配置。 + diff --git "a/\346\262\210\351\276\231/20240702_mysql\345\221\275\344\273\244.md" "b/\346\262\210\351\276\231/20240702_mysql\345\221\275\344\273\244.md" new file mode 100644 index 0000000000000000000000000000000000000000..540f3e96b6081cb5116dbe200b2907b44230de47 --- /dev/null +++ "b/\346\262\210\351\276\231/20240702_mysql\345\221\275\344\273\244.md" @@ -0,0 +1,105 @@ +linux 系统下使用 mysql 数据库时的一些常用命令如下: + +1. **登录 mysql**: + ``` + mysql -u username -p + ``` + 这会提示你输入密码,然后登录到 mysql 数据库。 + +2. **退出 mysql**: + ``` + exit; + ``` + 或者按 `ctrl + d`。 + +3. **显示数据库**: + ``` + show databases; + ``` + 显示所有可用的数据库。 + +4. **选择数据库**: + ``` + use database_name; + ``` + 选择要使用的数据库。 + +5. **显示数据表**: + ``` + show tables; + ``` + 显示选定数据库中的所有表格。 + +6. **显示表结构**: + ``` + describe table_name; + ``` + 或者 + ``` + show columns from table_name; + ``` + 显示指定表格的结构和字段信息。 + +7. **创建数据库**: + ``` + create database database_name; + ``` + 创建一个新的数据库。 + +8. **删除数据库**: + ``` + drop database database_name; + ``` + 删除指定的数据库(谨慎操作)。 + +9. **创建表**: + ``` + create table table_name ( + column1 datatype, + column2 datatype, + ... + ); + ``` + 创建一个新的数据表。 + +10. **删除表**: + ``` + drop table table_name; + ``` + 删除指定的数据表(谨慎操作)。 + +11. **插入数据**: + ``` + insert into table_name (column1, column2, ...) values (value1, value2, ...); + ``` + 向指定表格插入新的数据行。 + +12. **查询数据**: + ``` + select * from table_name; + ``` + 查询表格中的数据。 + +13. **更新数据**: + ``` + update table_name set column1 = value1, column2 = value2, ... where condition; + ``` + 更新表格中已有的数据。 + +14. **删除数据**: + ``` + delete from table_name where condition; + ``` + 删除表格中的数据行。 + +15. **授权**: + ``` + grant privileges on database_name.table_name to 'username'@'hostname'; + ``` + 授权用户对指定数据库或表格执行特定操作。 + +16. **撤销权限**: + ``` + revoke privileges on database_name.table_name from 'username'@'hostname'; + ``` + 撤销之前授予的权限。 \ No newline at end of file diff --git "a/\346\262\210\351\276\231/20240703_postgresql.md" "b/\346\262\210\351\276\231/20240703_postgresql.md" new file mode 100644 index 0000000000000000000000000000000000000000..a971135751e167c6de58bb6352ecc73a4899e1b5 --- /dev/null +++ "b/\346\262\210\351\276\231/20240703_postgresql.md" @@ -0,0 +1,144 @@ +postgresql 是一个功能强大的关系型数据库管理系统,支持丰富的 sql 命令和功能。以下是一些常用的 postgresql 命令和功能列表: + +### 数据库管理 + +1. **连接到数据库** + ```sql + \c dbname username # 连接到指定数据库和用户名 + ``` + +2. **列出所有数据库** + ```sql + \l # 或 \list + ``` + +3. **创建数据库** + ```sql + create database dbname; + ``` + +4. **删除数据库** + ```sql + drop database dbname; + ``` + +5. **切换数据库** + ```sql + \connect dbname; + ``` + +### 表管理 + +1. **列出所有表** + ```sql + \dt # 或 \d + ``` + +2. **显示表结构** + ```sql + \d+ tablename # 显示指定表的结构和详细信息 + ``` + +3. **创建表** + ```sql + create table tablename ( + column1 datatype constraints, + column2 datatype, + ... + ); + ``` + +4. **删除表** + ```sql + drop table tablename; + ``` + +5. **重命名表** + ```sql + alter table tablename rename to new_tablename; + ``` + +6. **添加列** + ```sql + alter table tablename add column columnname datatype; + ``` + +7. **删除列** + ```sql + alter table tablename drop column columnname; + ``` + +### 数据操作 + +1. **插入数据** + ```sql + insert into tablename (column1, column2, ...) values (value1, value2, ...); + ``` + +2. **更新数据** + ```sql + update tablename set column1 = value1, column2 = value2 where condition; + ``` + +3. **删除数据** + ```sql + delete from tablename where condition; + ``` + +4. **查询数据** + ```sql + select column1, column2, ... from tablename where condition; + ``` + +### 用户和权限管理 + +1. **创建用户** + ```sql + create user username with password 'password'; + ``` + +2. **删除用户** + ```sql + drop user username; + ``` + +3. **授权** + ```sql + grant permission on table to username; + ``` + +4. **撤销权限** + ```sql + revoke permission on table from username; + ``` + +### 事务管理 + +1. **开始事务** + ```sql + begin; + ``` + +2. **提交事务** + ```sql + commit; + ``` + +3. **回滚事务** + ```sql + rollback; + ``` + +### 其他命令 + +1. **退出 postgresql** + ```sql + \q + ``` + +2. **查看帮助** + ```sql + \h command_name # 查看特定命令的帮助信息 + ``` + +以上命令涵盖了 postgresql 中常用的管理、数据操作和权限控制等方面。根据具体需求和环境,可以进一步了解和使用更多的 postgresql 功能和命令。 \ No newline at end of file diff --git "a/\346\262\210\351\276\231/20240704_\351\232\217\346\234\272\347\224\237\346\210\220.md" "b/\346\262\210\351\276\231/20240704_\351\232\217\346\234\272\347\224\237\346\210\220.md" new file mode 100644 index 0000000000000000000000000000000000000000..ca667da34ee4b774f6682669caa0e02f10a304b9 --- /dev/null +++ "b/\346\262\210\351\276\231/20240704_\351\232\217\346\234\272\347\224\237\346\210\220.md" @@ -0,0 +1,80 @@ +这段代码是在 PostgreSQL 数据库中创建一个自定义函数 `aaa`,用于生成指定长度的随机字符字符串。让我详细介绍一下每个部分的含义和功能: + +### 创建函数 `aaa` + +```sql +create or replace function aaa(length integer) +returns text as $$ +declare + alphabet text := 'abcdefghijklmnopqrstuvwxyz'; + random_chars text := ''; + i integer := 1; +begin + -- Ensure the length is between 1 and 30 + length := least(greatest(length, 1), 30); + + -- Generate random string + while i <= length loop + random_chars := random_chars || substring(alphabet from floor(random() * length(alphabet) + 1)::integer for 1); + i := i + 1; + end loop; + + return random_chars; +end; +$$ language plpgsql; +``` + +### 代码解释 + +1. **`create or replace function aaa(length integer)`**: + - `create or replace function` 用于创建一个新的函数或替换同名函数。 + - `aaa(length integer)` 指定函数名称为 `aaa`,并且接受一个整数类型的参数 `length`,表示生成的随机字符串的长度。 + +2. **`returns text as $$ ... $$`**: + - `returns text` 表明函数返回一个文本类型的值,即生成的随机字符串。 + +3. **`declare ... begin ... end;`**: + - `declare` 声明变量或常量,这里声明了 `alphabet`(字符集)、`random_chars`(存储生成的随机字符串)、`i`(循环计数器)等变量。 + + - `begin ... end;` 是函数体的开始和结束标记,包含了实际的逻辑代码。 + +4. **`alphabet text := 'abcdefghijklmnopqrstuvwxyz';`**: + - `alphabet` 变量存储了可能用于生成随机字符串的字符集,包括小写字母。 + +5. **`random_chars text := '';`**: + - `random_chars` 变量初始化为空字符串,用于累积生成的随机字符串。 + +6. **`i integer := 1;`**: + - `i` 变量初始化为 1,用作循环计数器。 + +7. **`length := least(greatest(length, 1), 30);`**: + - 这一行确保 `length` 参数在 1 到 30 之间,以满足生成随机字符串长度的限制要求。 + +8. **`while i <= length loop ... end loop;`**: + - `while ... loop` 构造一个循环,从 1 到 `length`,生成随机字符并将其拼接到 `random_chars` 变量中。 + +9. **`random_chars := random_chars || substring(alphabet from floor(random() * length(alphabet) + 1)::integer for 1);`**: + - 在每次循环中,使用 `random()` 函数生成一个随机数,乘以字符集的长度,并向下取整,以获取随机字符的索引。 + - `substring(alphabet from ... for 1)` 函数从 `alphabet` 字符串中提取指定位置的字符,并将其追加到 `random_chars` 变量中。 + +10. **`return random_chars;`**: + - 最后,使用 `return` 语句将生成的随机字符串返回给调用者。 + +11. **`$$ language plpgsql;`**: + - `$ ... $` 之间的部分是函数体的定义。 + - `language plpgsql` 指定了使用 PL/pgSQL 语言编写的函数。 + +### 使用函数 + +要使用这个函数来生成随机字符串,可以通过 `select` 语句调用该函数: + +```sql +-- 调用函数生成随机字符串,例如长度为10 +select aaa(10); +``` + +这将返回一个包含 10 个随机字符的字符串。 + +### 总结 + +通过创建这样一个自定义函数,你可以在 PostgreSQL 数据库中方便地生成指定长度的随机字符串,适用于各种需要随机数据的应用场景。如果有任何其他问题或需要进一步帮助,请随时告知! \ No newline at end of file