一、说明
在工作中经常用到mysql,只是每次使用的内容都是散落在不同的笔记中。每次要用的时候,要么需要从繁杂的笔记中翻找,要么重新从网上查内容。
这次把mysql的基础内容重新整理下,这样在使用的时候方便查找。
这个教程原理的内容没太多,主要是操作基础类的内容
对于原理类内容,以及更多的操作,可以看参考博文中的内容,或者直接买mysql的书籍来看。
二、mysql简介
mysql是一款开源数据库,由Monty开发,后来出售sun公司。后来甲骨文收购了sun公司,mysql就归属于甲骨文公司了。
三、mysql安装与配置
mysql的安装方式主要有包安装(如yum)、二进制安装、源码安装、docker安装
1.yum安装
1.1 安装mysql(这里用的是ubuntu官方仓库安装)
# 软件包更新
sudo apt-get update
# 安装mysql 8.0
# ps:如果有旧mysql版本,卸载软件。建议在干净系统装mysql
sudo apt-get install -y mysql-server
#安装mysql客户端
sudo apt-get install -y libmysqlclient-dev
# 启动mysql
sudo systemctl start mysql
# 设置mysql自启动
sudo systemctl enable mysql
# 查找mysql初始密码
sudo grep 'temporary password' '/var/log/mysql/error.log'
2.其他安装方式参考末尾的参考博文
3.mysql服务的文件说明
3.1 配置文件目录
/etc/mysql
3.2 日志文件目录
/var/log/mysql
3.3 mysql软件工作目录
/var/lib/mysql
三、mysql基础配置与优化
1.基础配置
1.1 配置mysql运行ip
vi /etc/mysql/mysql.conf.d/mysqld.cnf
# 在文件中填入
bind-address=1.1.1.1 #1.1.1.1 为本机运行ip
# 重启mysql
sudo systemctl restart mysql
1.2 打开远程访问并配置新用户
生产环境不要这么直接添加,要注意权限细致分离。
CREATE USER 'mysqluser'@'%' IDENTIFIED BY 'mysqluser123!';
GRANT ALL PRIVILEGES ON *.* TO 'mysqluser'@'%';
FLUSH PRIVILEGES;
1.3 修改mysql用户认证方式(用于解决公钥检索问题)
ALTER USER 'your_username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;
2.配置规范
来自公众号”架构师之路”
一、基础规范
表存储引擎必须使用InnoDB
表字符集默认使用utf8,必要时候使用utf8mb4
解读:
(1)通用,无乱码风险,汉字3字节,英文1字节
(2)utf8mb4是utf8的超集,有存储4字节例如表情符号时,使用它
禁止使用存储过程,视图,触发器,Event
解读:
(1)对数据库性能影响较大,互联网业务,能让站点层和服务层干的事情,不要交到数据库层
(2)调试,排错,迁移都比较困难,扩展性较差
禁止在数据库中存储大文件,例如照片,可以将大文件存储在对象存储系统,数据库中存储路径
禁止在线上环境做数据库压力测试
测试,开发,线上数据库环境必须隔离
二、命名规范
库名,表名,列名必须用小写,采用下划线分隔
解读:abc,Abc,ABC都是给自己埋坑
库名,表名,列名必须见名知义,长度不要超过32字符
解读:tmp,wushan谁TM知道这些库是干嘛的
库备份必须以bak为前缀,以日期为后缀
从库必须以-s为后缀
备库必须以-ss为后缀
三、表设计规范
单实例表个数必须控制在2000个以内
单表分表个数必须控制在1024个以内
表必须有主键,推荐使用UNSIGNED整数为主键
潜在坑:删除无主键的表,如果是row模式的主从架构,从库会挂住
禁止使用外键,如果要保证完整性,应由应用程式实现
解读:外键使得表之间相互耦合,影响update/delete等SQL性能,有可能造成死锁,高并发情况下容易成为数据库瓶颈
建议将大字段,访问频度低的字段拆分到单独的表中存储,分离冷热数据
解读:具体参加《如何实施数据库垂直拆分》
四、列设计规范
根据业务区分使用tinyint/int/bigint,分别会占用1/4/8字节
根据业务区分使用char/varchar
解读:
(1)字段长度固定,或者长度近似的业务场景,适合使用char,能够减少碎片,查询性能高
(2)字段长度相差较大,或者更新较少的业务场景,适合使用varchar,能够减少空间
根据业务区分使用datetime/timestamp
解读:前者占用5个字节,后者占用4个字节,存储年使用YEAR,存储日期使用DATE,存储时间使用datetime
必须把字段定义为NOT NULL并设默认值
解读:
(1)NULL的列使用索引,索引统计,值都更加复杂,MySQL更难优化
(2)NULL需要更多的存储空间
(3)NULL只能采用IS NULL或者IS NOT NULL,而在=/!=/in/not in时有大坑
使用INT UNSIGNED存储IPv4,不要用char(15)
使用varchar(20)存储手机号,不要使用整数
解读:
(1)牵扯到国家代号,可能出现+/-/()等字符,例如+86
(2)手机号不会用来做数学运算
(3)varchar可以模糊查询,例如like ‘138%’
使用TINYINT来代替ENUM
解读:ENUM增加新值要进行DDL操作
五、索引规范
唯一索引使用uniq_[字段名]来命名
非唯一索引使用idx_[字段名]来命名
单张表索引数量建议控制在5个以内
解读:
(1)互联网高并发业务,太多索引会影响写性能
(2)生成执行计划时,如果索引太多,会降低性能,并可能导致MySQL选择不到最优索引
(3)异常复杂的查询需求,可以选择ES等更为适合的方式存储
组合索引字段数不建议超过5个
解读:如果5个字段还不能极大缩小row范围,八成是设计有问题
不建议在频繁更新的字段上建立索引
非必要不要进行JOIN查询,如果要进行JOIN查询,被JOIN的字段必须类型相同,并建立索引
解读:踩过因为JOIN字段类型不一致,而导致全表扫描的坑么?
理解组合索引最左前缀原则,避免重复建设索引,如果建立了(a,b,c),相当于建立了(a), (a,b), (a,b,c)
六、SQL规范
禁止使用select *,只获取必要字段
解读:
(1)select *会增加cpu/io/内存/带宽的消耗
(2)指定字段能有效利用索引覆盖
(3)指定字段查询,在表结构变更时,能保证对应用程序无影响
insert必须指定字段,禁止使用insert into T values()
解读:指定字段插入,在表结构变更时,能保证对应用程序无影响
隐式类型转换会使索引失效,导致全表扫描
禁止在where条件列使用函数或者表达式
解读:导致不能命中索引,全表扫描
禁止负向查询以及%开头的模糊查询
解读:导致不能命中索引,全表扫描
禁止大表JOIN和子查询
同一个字段上的OR必须改写问IN,IN的值必须少于50个
应用程序必须捕获SQL异常
解读:方便定位线上问题
说明:本军规适用于并发量大,[[数据量大的典型互联网业务,可直接带走参考,不谢。
3.mysql基础配置文件
3.1 配置文件说明

1. /etc/mysql/mysql.conf.d/mysqld.cnf
作用:主配置文件之一,定义 MySQL 服务端核心参数(如内存管理、日志、存储引擎等)。
配置段:[mysqld]。
2. /etc/mysql/conf.d/mysql.cnf
作用:存储 MySQL 客户端工具的全局配置,影响所有用户通过 mysql 命令行客户端连接时的默认行为。
配置段:[mysql](如默认字符集、连接超时等参数)。
3. /etc/mysql/conf.d/mysqldump.cnf
作用:定义 mysqldump 工具的全局配置,控制数据库备份行为(如压缩选项、事务一致性等)。
配置段:[mysqldump]。
4. /etc/mysql/mysql.cnf
作用:Ubuntu/Debian 系统中 MySQL 客户端的默认配置文件,优先级低于用户级 ~/.my.cnf。
配置段:[client](如默认连接参数、SSL 配置等)。
5. /etc/mysql/debian.cnf
作用:Debian 系系统自动生成的配置文件,存储 debian-sys-maint 系统账户的凭据,用于系统服务管理(如自动修复表、日志轮转)。
权限:默认仅 root 可读,包含敏感信息。
3.2 mysql服务器主配置文件

# MySQL配置文件mysqld.cnf
# 一、客户端配置
[client]
port = 3306 # 客户端连接端口,默认3306
socket = /tmp/mysql.sock # 本地通信使用的套接字文件路径
default-character-set = utf8mb4 # 客户端默认字符集
# 二、服务器基础配置
[mysqld]
user = mysql # 运行MySQL服务的系统用户
port = 3306 # 服务监听端口,默认3306
bind-address = 0.0.0.0 # 允许连接的IP地址(0.0.0.0表示允许所有IP)
datadir = /var/lib/mysql # 数据文件存储目录
basedir = /usr/local/mysql # MySQL安装根目录
socket = /tmp/mysql.sock # 服务端套接字文件路径
server-id = 1 # 服务器唯一ID(主从复制时需唯一)
pid-file = /var/run/mysql.pid # 进程ID文件路径
# 三、存储引擎配置(InnoDB)
[innodb]
innodb_buffer_pool_size = 1G # InnoDB缓冲池大小(建议为物理内存的70%~80%)
innodb_log_file_size = 256M # 事务日志文件大小
innodb_flush_log_at_trx_commit = 1 # 事务提交时刷盘策略(1=强一致性,2=性能优化)
innodb_file_per_table = ON # 每张表独立表空间文件
# 四、网络与连接管理
max_connections = 200 # 最大并发连接数
max_connect_errors = 1000 # 允许的最大连接错误数
wait_timeout = 600 # 非交互连接超时时间(秒)
interactive_timeout = 600 # 交互连接超时时间(秒)
back_log = 600 # 等待连接队列长度(高并发时需增大)
# 五、查询与缓存优化
query_cache_type = 1 # 查询缓存类型(1=启用,0=禁用)
query_cache_size = 64M # 查询缓存大小
key_buffer_size = 256M # MyISAM索引缓存大小
tmp_table_size = 64M # 临时表内存大小(超限转磁盘)
max_allowed_packet = 64M # 单次传输最大数据包大小
# 六、日志与安全
log_error = /var/log/mysql.log # 错误日志路径
slow_query_log = 1 # 启用慢查询日志
slow_query_log_file = /var/log/slow_queries.log # 慢查询日志路径
log-bin = mysql-bin # 二进制日志路径(主从复制必需)
expire_logs_days = 7 # 自动清理过期二进制日志天数
secure-file-priv = /tmp # 限制文件导入/导出目录
# 七、字符集与排序规则
character-set-server = utf8mb4 # 服务端默认字符集
collation-server = utf8mb4_unicode_ci # 默认排序规则
# 八、其他关键参数
skip_name_resolve = ON # 禁止DNS解析(加速连接)
lower_case_table_names = 1 # 表名大小写不敏感(0=敏感,1=不敏感)
default-storage-engine = InnoDB # 默认存储引擎
thread_cache_size = 8 # 线程缓存数(减少线程创建开销)
四、mysql监控
1.mysql使用已有的监控软件监控既可。比如Nightingale、zabbix等。
这里选几个常用的指标,很多监控都有现成的指标,可以在那个基础上再根据业务增加或缩减。

五、mysql数据备份与恢复
mysql的备份可以全量备份和增量备份。每天的备份可以是增量备份,然后一周或是一个月左右全量备份一次。
也可以在有重大变更时做一次全量备份。
1.全量备份
# 数据备份
mysqldump -u mysqluser -p wmltest > backup.sql
# 数据恢复
mysql -u mysqluser -p wmltest < backup.sql
2.增量备份
增量备份可以使用mysqlbinlog或XtraBackup工具来实现增量备份。
2.1 mysqlbinlog工具备份
# 启用二进制日志,在mysql配置文件中加入下面内容。
[mysqld]
log_bin = mysql-bin
server_id = 1
# 执行全量备份
mysqldump -u username -p --all-databases > full_backup.sql
# 备份binlog文件
mysqldump -u username -p --all-databases > full_backup.sql
# 备份binlog文件:
--执行以下mysql备份数据库命令会将当前binlog文件切换为一个新的文件,确保备份过程包含了全量备份之后的所有日志。
FLUSH LOGS;
# 执行MySQL增量备份
mysqlbinlog mysql-bin.000001 mysql-bin.000002 > incremental_backup.sql
-- 将指定的binlog文件导出到名为incremental_backup.sql的文件中。可以根据需要备份从上次备份后生成的所有binlog文件。
2.2 备份恢复
# 首先,使用全量备份恢复数据库到新的状态:
mysql -u username -p < full_backup.sql
# 然后,应用增量备份的binlog文件来恢复更新的数据:
mysql -u username -p < incremental_backup.sql
3. 定期维护和管理备份文件
1. 定期清理旧的备份文件:根据备份策略,定期清理不再需要的旧备份文件,释放存储空间。
2. 监控备份过程和日志:建立监控机制,定期检查备份过程和日志,确保备份的完整性和可靠性。
六、mysql高可用
MySQL的高可用可以直接买这本书看《MySQL高可用解决方案》 。
书中把原理、以及操作都讲到了。
在具体部署时,在参考文档依据最新内容来配置即可。
七、mysql常用命令与语句
1.数据库操作相关
# 查看mysql版本
SELECT VERSION();
# 查看数据库
show databases;
# 创建数据库
CREATE DATABASE wordpress;
# 选择数据库
use mysql;
# 查看服务器字符集
SHOW VARIABLES LIKE 'character_set_server';
SHOW VARIABLES LIKE 'collation_server';
# 查看特定数据库的字符集
SELECT schema_name, default_character_set_name, default_collation_name
FROM information_schema.schemata
WHERE schema_name = 'wmltest';
2.用户操作相关
2.1 创建用户
# create命令
# 创建用户
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
# 这里,'newuser'@'localhost' 表示用户名为 newuser,可以从 localhost 访问。'password' 是用户的密码。如果你想让用户从任何主机连接,可以使用 '%' 替代 'localhost',例如:
CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
# GRANT命令
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
# INSERT命令
INSERT INTO mysql.user (User, Host, Password) VALUES ('username', 'localhost', PASSWORD('password'));
FLUSH PRIVILEGES;
2.2 用户权限
# 配置用户权限
GRANT 权限类型 ON 数据库.表 TO '用户名'@'主机';
# 权限类型:ALL PRIVILEGES:全部权限(慎用)。特定权限:如SELECT, INSERT, UPDATE, 或CREATE, DROP等。3权限范围:*.*:所有数据库和表。testdb.*:特定数据库的所有表。
#- 示例:
# 仅允许查询和插入数据:
GRANT SELECT, INSERT ON mydb.* TO 'user1'@'localhost';
# 允许用户授权他人(添加WITH GRANT OPTION):
GRANT ALL ON *.* TO 'admin'@'%' WITH GRANT OPTION;
#- 权限查询与撤销。
# 查看用户权限:
SHOW GRANTS FOR '用户名'@'主机'
# 撤销权限:
REVOKE 权限 ON 数据库.表 FROM '用户名'@'主机'
# 安全建议
最小权限原则:避免授予ALL PRIVILEGES,按需分配权限。12访问控制:尽量限制用户主机范围,减少使用%通配符。1定期维护:删除无用账户(DROP USER),修改默认密码策略(如设置过期时间150天)
2.3 用户操作
# 修改用户密码
ALTER USER 'mysqluser'@'%' IDENTIFIED BY 'mysqluser123!';
# 显示所有用户
-- 登录MySQL
mysql -u root -p
-- 切换到mysql数据库
USE mysql;
-- 查询所有用户
SELECT User, Host FROM user;
3.数据库表操作
3.1 创建表
# 创建表的基本语法
CREATETABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
column3 datatype constraint,
....
);
# 例如,创建一个名为students的表,包含id、name和age字段:
CREATETABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOTNULL,
age INT
);
3.2 修改表
# 修改表
## 添加列
# 向表中添加新列的语法如下:
ALTER TABLE table_name ADD column_name datatype;
# 例如,向students表中添加一个email列:
ALTER TABLE students ADD email VARCHAR(100);
## 删除列
# 删除表中列的语法如下:
ALTER TABLE table_name DROP COLUMN column_name;
# 例如,从students表中删除email列:
ALTER TABLE students DROP COLUMN email;
# 修改列的数据类型或名称
# 修改列的数据类型或名称的语法如下:
ALTER TABLE table_name MODIFY COLUMN column_name new_datatype;ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name new_datatype;
# 例如,修改students表中age列的数据类型为INT:
ALTER TABLE students MODIFY COLUMN age INT;
# 或者更改列名:
ALTER TABLE students CHANGE COLUMN age age_in_years INT;
3.3 删除表
# 删除表的语法如下:
DROP TABLE table_name;
# 例如,删除students表:
DROP TABLE students;
3.4 查询表结构信息
# 查看表结构的语法如下:
DESCRIBE table_name;
# 或者使用:
SHOW COLUMNS FROM table_name;
# 例如,查看students表的结构:
DESCRIBE students;
# 或者:
SHOW COLUMNS FROM students;
4.增、删、改、查
4.1 增
# 语法
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
# 参数说明:
# table_name 是你要插入数据的表的名称。
# column1, column2, column3, ... 是表中的列名。
# value1, value2, value3, ... 是要插入的具体数值。
# 一个简单的实例,插入了一行数据到名为 users 的表中:
INSERT INTO users (username, email, birthdate, is_active)
VALUES ('test', 'test@runoob.com', '1990-01-01', true);
# username: 用户名,字符串类型。
# email: 邮箱地址,字符串类型。
# birthdate: 用户生日, 日期类型。
# is_active: 是否已激活,布尔类型。
# 如果你要插入所有列的数据,可以省略列名:
INSERT INTO users
VALUES (NULL,'test', 'test@runoob.com', '1990-01-01', true);
# 这里,NULL 是用于自增长列的占位符,表示系统将为 id 列生成一个唯一的值。
如果你要插入多行数据,可以在 VALUES 子句中指定多组数值:
INSERT INTO users (username, email, birthdate, is_active)
VALUES
('test1', 'test1@runoob.com', '1985-07-10', true),
('test2', 'test2@runoob.com', '1988-11-25', false),
('test3', 'test3@runoob.com', '1993-05-03', true);
4.2 删
# 语法
DELETE FROM table_name
WHERE condition;
# 参数说明:
# table_name 是你要删除数据的表的名称。
# WHERE condition 是一个可选的子句,用于指定删除的行。如果省略 WHERE 子句,将删除表中的所有行。
# 更多说明:
# 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
# 你可以在 WHERE 子句中指定任何条件
# 您可以在单个表中一次性删除记录。
# 当你想删除数据表中指定的记录时 WHERE 子句是非常有用的。
# 实例
# 以下实例演示了如何使用 DELETE 语句。
# 1. 删除符合条件的行:
DELETE FROM students
WHERE graduation_year = 2021;
#以上 SQL 语句删除了 students 表中所有 graduation_year 为 2021 的学生的记录。
# 2. 删除所有行:
DELETE FROM orders;
#以上 SQL 语句删除了 orders 表中的所有记录,但表结构保持不变。
# 3. 使用子查询删除符合条件的行:
DELETE FROM customers
WHERE customer_id IN (
SELECT customer_id
FROM orders
WHERE order_date < '2023-01-01'
);
# 以上 SQL 语句通过子查询删除了 orders 表中在 '2023-01-01' 之前下的订单对应的客户。
# 注意: 在使用 DELETE 语句时,请确保你提供了足够的条件来确保只有你想要删除的行被删除。如果不提供 WHERE 子句,将删除表中的所有行,可能导致不可预测的结果。
4.3 改
#语法
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
# 参数说明:
# table_name 是你要更新数据的表的名称。
# column1, column2, ... 是你要更新的列的名称。
# value1, value2, ... 是新的值,用于替换旧的值。
# WHERE condition 是一个可选的子句,用于指定更新的行。如果省略 WHERE 子句,将更新表中的所有行。
# 更多说明:
# 你可以同时更新一个或多个字段。
# 你可以在 WHERE 子句中指定任何条件。
# 你可以在一个单独表中同时更新数据。
# 当你需要更新数据表中指定行的数据时 WHERE 子句是非常有用的。
# 实例
以下实例演示了如何使用 UPDATE 语句。
#1. 更新单个列的值:
UPDATE employees
SET salary = 60000
WHERE employee_id = 101;
# 2. 更新多个列的值:
UPDATE orders
SET status = 'Shipped', ship_date = '2023-03-01'
WHERE order_id = 1001;
# 3. 使用表达式更新值:
UPDATE products
SET price = price * 1.1
WHERE category = 'Electronics';
#以上 SQL 语句将每个属于 'Electronics' 类别的产品的价格都增加了 10%。
#4. 更新符合条件的所有行:
UPDATE students
SET status = 'Graduated';
#以上 SQL 语句将所有学生的状态更新为 'Graduated'。
# 5. 更新使用子查询的值:
UPDATE customers
SET total_purchases = (
SELECT SUM(amount)
FROM orders
WHERE orders.customer_id = customers.customer_id
)
WHERE customer_type = 'Premium';
# 以上 SQL 语句通过子查询计算每个 'Premium' 类型客户的总购买金额,并将该值更新到 total_purchases 列中。
# 注意: 在使用 UPDATE 语句时,请确保你提供了足够的条件来确保只有你想要更新的行被修改。如果不提供 WHERE 子句,将更新表中的所有行,可能导致不可预测的结果。
4.4 查
# 语法
SELECT column1, column2, ...
FROM table_name
[WHERE condition]
[ORDER BY column_name [ASC | DESC]]
[LIMIT number];
# 参数说明:
# column1, column2, ... 是你想要选择的列的名称,如果使用 * 表示选择所有列。
# table_name 是你要从中查询数据的表的名称。
# WHERE condition 是一个可选的子句,用于指定过滤条件,只返回符合条件的行。
# ORDER BY column_name [ASC | DESC] 是一个可选的子句,用于指定结果集的排序顺序,默认是升序(ASC)。
# LIMIT number 是一个可选的子句,用于限制返回的行数。
# MySQL SELECT 语句简单的应用实例:
# 实例-- 选择所有列的所有行
SELECT * FROM users;
# -- 选择特定列的所有行
SELECT username, email FROM users;
# -- 添加 WHERE 子句,选择满足条件的行
SELECT * FROM users WHERE is_active = TRUE;
# -- 添加 ORDER BY 子句,按照某列的升序排序
SELECT * FROM users ORDER BY birthdate;
# -- 添加 ORDER BY 子句,按照某列的降序排序
SELECT * FROM users ORDER BY birthdate DESC;
# -- 添加 LIMIT 子句,限制返回的行数
SELECT * FROM users LIMIT 10;
# SELECT 语句可以是灵活的,我们可以根据实际需求组合和使用这些子句,比如同时使用 WHERE 和 ORDER BY 子句,或者使用 LIMIT 控制返回的行数。
# 在 WHERE 子句中,你可以使用各种条件运算符(如 =, <, >, <=, >=, !=),逻辑运算符(如 AND, OR, NOT),以及通配符(如 %)等。
# 以下是一些进阶的 SELECT 语句实例:
# 实例-- 使用 AND 运算符和通配符
SELECT * FROM users WHERE username LIKE 'j%' AND is_active = TRUE;
# -- 使用 OR 运算符
SELECT * FROM users WHERE is_active = TRUE OR birthdate < '1990-01-01';
# -- 使用 IN 子句
SELECT * FROM users WHERE birthdate IN ('1990-01-01', '1992-03-15', '1993-05-03');
八、mysql连接终端
1.MySQL Workbench
网址:https://www.mysql.com/products/workbench/
- 官方推荐的综合性工具,支持数据库设计、SQL开发、管理和性能监控。
- 功能全面,适合从初学者到高级用户,支持数据建模和远程管理。
2.DBeaver
官网:https://dbeaver.io/download/
- 开源免费,支持多种数据库(包括MySQL),界面友好且功能丰富。
3.HeidiSQL
- 轻量级且免费,支持MySQL、MariaDB等,适合快速查询和简单管理。
- 界面直观,多标签页设计提升效率。
官网:https://www.navicat.com/en/
- 需付费,适合企业级需求。
- 商业软件,功能强大且界面友好,支持多种数据库和云服务。
九、参考资料
1.sql 菜鸟教程
https://www.runoob.com/sql/sql-tutorial.html
2.mysql 菜鸟教程
https://www.runoob.com/mysql/mysql-tutorial.html
3.mysql安装
3.1 yum安装mysql5.7
https://www.linuxidc.com/Linux/2016-09/135288.htm
3.2 源码安装mysql
https://blog.csdn.net/baidu_39195185/article/details/147756409
3.3 源码安装与二进制安装mysql
https://www.cnblogs.com/txdao/articles/18891322
3.4 ubuntu20.04下安装mysql8.0
https://blog.csdn.net/qq_52489359/article/details/147472769
https://zhuanlan.zhihu.com/p/683587439
3.5 ubuntu安装mysql
https://blog.csdn.net/a247534855/article/details/147329240
3.6 Ubuntu安装MySQL步骤及注意事项
https://blog.csdn.net/a247534855/article/details/147329240
4.mysql高可用方案
4.1 主从同步
https://www.cnblogs.com/gl-developer/p/6170423.html
http://blog.csdn.net/zyz511919766/article/details/12753025
http://www.jb51.net/article/97751.htm
http://blog.51cto.com/chrinux/1204586
4.2 从库改为主库
https://www.cnblogs.com/huligong1234/p/7998511.html
https://blog.csdn.net/u010587433/article/details/47608987
https://www.cnblogs.com/gomysql/p/3663146.html
4.3 宕机解决方案
https://blog.csdn.net/zfl589778/article/details/51441719
4.4 mysql5.7主从宕机操作
http://blog.51cto.com/wsxxsl/2045620
4.5 mysql5.7无损复制
http://www.mamicode.com/info-detail-1918608.html
4.6 主从同步错误
https://blog.csdn.net/cug_jiang126com/article/details/46846031
4.7 主从同步与监控
https://blog.csdn.net/field_yang/article/details/78639405
MySQL 高可用
https://blog.csdn.net/2301_80839375/article/details/148002997
MySQL数据库,简述5种MySQL高可用方案
https://cloud.tencent.com/developer/article/1807281
MySQL主从同步
https://blog.csdn.net/Starry__Sky222/article/details/145539160
mysql主从复制
https://www.cnblogs.com/MingGyGy-Castle/p/17862517.html
MySQL之MHA高可用配置及故障切换
Mysql高可用方案
https://blog.csdn.net/laizihao/article/details/147878874
深入浅出MySQL复制三剑客:同步、异步、半同步复制到底怎么选?
https://blog.csdn.net/qq_35485206/article/details/145464848
5.mysql操作
5.1 mysql创建表
https://www.cnblogs.com/widows/p/7137184.html
5.2 mysql往表中写入数据
https://blog.csdn.net/u012660464/article/details/75529216
5.3 mysql查看表的所有记录数
https://blog.csdn.net/a19860903/article/details/52311765
5.4 mysql常用操作
http://www.runoob.com/mysql/mysql-create-tables.html
MySQL修改root密码的4种方法
https://blog.csdn.net/TH_NUM/article/details/71402801
问题处理
https://blog.csdn.net/ppdouble/article/details/7721301
mysql 开启root远程连接_mysql开启root用户可远程登录方法
https://www.cnblogs.com/sunny3158/p/16629001.html
mysql开启远程访问权限
https://blog.csdn.net/weixin_45156141/article/details/131561530
MySql 之 常用命令汇总
https://blog.csdn.net/Czhenya/article/details/118855772
MySQL如何显示所有用户?(mysql显示所有用户)
https://www.dbs724.com/162690.html
mysql 数据库增加用户与为用户授权
https://blog.51cto.com/u_15080020/4396417
mysql给用户赋予管理员权限 mysql赋予权限语句
https://blog.51cto.com/u_16099192/6362080
6.mysql备份
MySQL的增量备份
https://blog.csdn.net/Y04120602140/article/details/143455638
mysql的binlog日志 详解
https://blog.csdn.net/jkzyx123/article/details/127094632
服务器mysql数据库备份,服务器mysql数据库备份有哪些方法?
https://zhuanlan.zhihu.com/p/1890458101896962073
MySQL全量,增量备份与恢复
https://blog.csdn.net/zhcong_/article/details/147893911
怎么让MySQL数据库增量备份?
https://www.abackup.com/enterprise-backup/mysql-database-incremental-backup-6540.html
xtrabackup使用命令
https://www.cnblogs.com/hahaha111122222/p/18668742
7.mysql配置文件
MySQL 的配置文件详解
https://blog.csdn.net/zhangxueyi/article/details/146306833
MySQL 配置文件详解
https://www.cnblogs.com/horacexie/p/18780294
8.监控
【MySQL】常用监控指标及监控方法
https://blog.csdn.net/DK_Allen/article/details/146519644
mysql -监控数据以及配置参数