synchronization
Some checks failed
continuous-integration/drone Build is failing

This commit is contained in:
2025-08-25 15:57:40 +08:00
commit cee91802b3
106 changed files with 9124 additions and 0 deletions

View File

@@ -0,0 +1,270 @@
> 本文作者:丁辉
# MYSQL字符集
[Unicode 标准](https://home.unicode.org/)
## 常用基础 sql 命令
> 以 "utf8mb4" 字符集作为示例
- 查看当前 MYSQL 支持的字符集
```sql
show collation;
```
> 过滤 "utf8mb4" 字符集
>
> ```sql
> SHOW COLLATION LIKE 'utf8mb4%';
> ```
- 查看 "数据库" 或 "表" 字符集
```sql
show create database <库名>;
```
```sql
show create table <表名>;
```
- 创建时指定字符集
- 创建 "数据库" 指定字符集
```sql
CREATE DATABASE <库名> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
- 创建 "表" 指定字符集
```sql
CREATE TABLE demo_table (
name VARCHAR(3)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
- 修改字符集
- 修改 "数据库" 字符集
```sql
ALTER DATABASE <库名> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
- 修改 "表" 字符集
```sql
ALTER TABLE <表名> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
## 常见的 MySQL 字符集和排序规则
| 字符集 | 排序规则 |
| :----------------: | :----------------------------------------------------------: |
| utf8mb4_general_ci | 一般排序规则,对各种语言都能工作,但不支持所有语言的精确排序。 |
| utf8mb4_bin | 二进制排序规则,区分大小写,直接按照字符编码的二进制值排序。 |
| utf8mb4_unicode_ci | Unicode排序规则更准确地排序各种语言的字符但可能会比较耗费资源。 |
# MYSQL 授权
> 以 "offends" 用户作为示例
- 查看 MYSQL 用户
```sql
select user,host from mysql.user;
```
- 创建用户
```sql
CREATE USER offends IDENTIFIED BY 'offends';
```
>创建用户时配置允许哪些主机登录
>
>```sql
>CREATE USER 'offends'@'host' IDENTIFIED BY 'offends';
>```
- 用户权限
- 查看权限
```sql
SHOW GRANTS FOR 'offends'@'%';
```
- 删除权限
```sql
REVOKE ALL PRIVILEGES ON *.* FROM 'offends'@'%';
```
- 授权用户
- 完整权限授权
```sql
GRANT ALL PRIVILEGES ON *.* TO 'offends'@'%' IDENTIFIED BY 'offends';
```
> - `GRANT`: 这个关键字表示你要给予权限。
> - `ALL PRIVILEGES`: 表示赋予用户所有权限包括SELECT、INSERT、UPDATE、DELETE等等。
> - `*.*`: 这部分表示所有数据库和所有表。第一个星号表示所有数据库,第二个星号表示所有表。
> - `TO 'offends'@'%'`: 表示授予权限给一个名为 'offends' 的用户,@'%' 表示这个用户可以从任何主机连接到数据库。如果你希望用户只能从特定主机连接,可以在这里指定该主机的 IP 地址或主机名。
> - `IDENTIFIED BY 'offends'`: 表示用户的密码是 'offends'。这是用于验证用户身份的密码。
- 普通授权
- 指定数据库授权,配置主机登录
```sql
GRANT ALL PRIVILEGES ON <需要授权库名>.* TO 'offends'@'localhost' IDENTIFIED BY 'offends';
```
- 配置普通权限
```sql
GRANT SELECT ON offends.* TO 'offends'@'%' IDENTIFIED BY 'offends';
```
> 通常情况下公司内部授予查询权限
- 信任用户委派权限管理(用户可以将权限分配给其他用户)
```sql
GRANT ALL PRIVILEGES ON *.* TO 'offends'@'%' WITH GRANT OPTION;
```
- 刷新reload权限确保当前对用户权限的更改立即生效。
```sql
FLUSH PRIVILEGES;
```
# MYSQL 常用命令
- 使用 mysqladmin 修改密码
```bash
mysqladmin -u用户名 -p旧密码 password 新密码
```
- 修改密码
> MYSQL 5.7
```sql
update mysql.user set authentication_string=password('newpassword') where user='offends';
```
> 刷新
>
> ```sql
> FLUSH PRIVILEGES;
> ```
>
>忘记密码则可以在 MYSQL 配置文件 my.cnf 内添加 `skip-grant-tables` 开启免密登录修改密码
- 修改(无法加载身份验证插件"caching_sha2_password")问题
```sql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<密码>';
```
- 修改表中数据
```sql
UPDATE <表名> SET <需要修改的字段>='值' WHERE ID='字段ID号';
```
- 查看数据库表结构
```sql
SHOW CREATE TABLE <表名>;
```
- 修改数据库表结构
```sql
alter table <表名> modify column <字段> <修改后的字段> NULL;
```
- 重置副本数
```bash
RESET REPLICA;
```
- 禁止导出gtid信息
```bash
mysqldump -uroot -p密码 库 --set-gtid-purged=off > demo.sql
```
- 清空所有GTID信息
```bash
reset slave all;
reset master;
```
# MYSQL 备份
- MYSQL 备份,禁止导出gtid信息
```sql
mysqldump -uroot -p<密码> <库> --set-gtid-purged=off > backup.sql
```
- MYSQL 全量备份
```sql
mysqldump -uroot -p<密码> --all-databases > backup.sql
```
> | 参数 | 描述 |
> | ---------------------- | ------------------------------------------------------------ |
> | `--quick` | 使用快速插入方式,适用于大型数据库,减少锁定时间 |
> | `--events` | 备份事件Event信息这包括触发器等 |
> | `--all-databases` | 备份所有数据库 |
> | `--flush-logs` | 备份时刷新 MySQL 的日志,确保备份包含完整的事务日志 |
> | `--delete-master-logs` | 备份后删除主服务器上的二进制日志,释放磁盘空间 |
> | `--single-transaction` | 在整个备份过程中使用单一事务,保证数据的一致性,适用于 InnoDB 存储引擎 |
- MYSQL 增量备份
- 检查是 log_bin 是否开启(增量备份需开启)
```sql
show variables like '%log_bin%';
```
> 配置 my.cnf 添加 `log-bin=/var/lib/mysql/backup` 开启 log_bin
- 增量备份
```bash
mysqladmin -uroot -p<密码> flush-logs
```
> 在 /var/lib/mysql/backup 下查看增量备份日志
- 恢复增量备份
```bash
mysqlbinlog /var/lib/mysql/backup/binlog.000008 | mysql -uroot -p<密码>;
```

View File

@@ -0,0 +1,54 @@
> 本文作者:丁辉
# Mysql数据库常用指令
- 创建数据库指定utf8mb4字符集
```bash
create database $database default character set utf8mb4 collate utf8mb4_unicode_ci;
```
- 修改数据库表判定是否可以为空
```bash
alter table 表名 modify column 字段 varchar(64) NULL;
```
- 查看数据库表结构
```bash
SHOW CREATE TABLE 库.表;
```
- 备份库
```bash
mysqldump -uroot -p密码 库 > demo.sql
```
- 备份表
```bash
mysqldump -uroot -p密码 库 表 > demo.sql
```
- 重置副本数
```bash
RESET REPLICA;
```
- 禁止导出gtid信息
```bash
mysqldump -uroot -p密码 库 --set-gtid-purged=off > demo.sql
```
- 清空所有GTID信息
```bash
reset slave all;
reset master;
```

View File

@@ -0,0 +1,9 @@
*
> 本文作者:丁辉
# Mysql相关文档
- [Mysql双主部署](https://gitee.com/offends/Linux/src/branch/main/%E8%B5%84%E6%BA%90%E5%AE%89%E8%A3%85/Mysql%E5%8F%8C%E4%B8%BB%E9%83%A8%E7%BD%B2.md)