MySQL关系型数据库学习
学习参考链接:https://www.runoob.com/mysql/mysql-tutorial.html
Windows 安装MYSQL服务端的步骤:https://www.runoob.com/w3cnote/windows10-mysql-installer.html
1. 概念学习
MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL 使用标准的 SQL 数据语言形式。
MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系统。
- 表头(header): 每一列的名称;
- 列(col): 具有相同数据类型的数据的集合;
- 行(row): 每一行用来描述某条记录的具体信息;
- 值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
- 键(key): 键的值在当前列中具有唯一性。
2. MySQL权限管理
客户端连接权限
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
表管理权限
GRANT privileges ON database_name.* TO 'username'@'host';
3. MySQL配置文件
/etc/my.cnf 文件配置
/etc/my.cnf 文件是 MySQL 配置文件,用于配置 MySQL 服务器的各种参数和选项。
一般情况下,你不需要修改该配置文件,该文件默认配置如下:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock[mysql.server]
user=mysql
basedir=/var/lib[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
在配置文件中,你可以指定不同的错误日志文件存放的目录,一般你不需要改动这些配置。
/etc/my.cnf 文件在不同的系统和 MySQL 版本中可能有所不同,但是一般包含以下几个部分:
- 基本设置
basedir: MySQL 服务器的基本安装目录。
datadir: 存储 MySQL 数据文件的位置。
socket: MySQL 服务器的 Unix 套接字文件路径。
pid-file: 存储当前运行的 MySQL 服务器进程 ID 的文件路径。
port: MySQL 服务器监听的端口号,默认是 3306。 - 服务器选项
bind-address: 指定 MySQL 服务器监听的 IP 地址,可以是 IP 地址或主机名。
server-id: 在复制配置中,为每个 MySQL 服务器设置一个唯一的标识符。
default-storage-engine: 默认的存储引擎,例如 InnoDB 或 MyISAM。
max_connections: 服务器可以同时维持的最大连接数。
thread_cache_size: 线程缓存的大小,用于提高新连接的启动速度。
query_cache_size: 查询缓存的大小,用于提高相同查询的效率。
default-character-set: 默认的字符集。
collation-server: 服务器的默认排序规则。 - 性能调优
innodb_buffer_pool_size: InnoDB 存储引擎的缓冲池大小,这是 InnoDB 性能调优中最重要的参数之一。
key_buffer_size: MyISAM 存储引擎的键缓冲区大小。
table_open_cache: 可以同时打开的表的缓存数量。
thread_concurrency: 允许同时运行的线程数。 - 安全设置
skip-networking: 禁止 MySQL 服务器监听网络连接,仅允许本地连接。
skip-grant-tables: 以无需密码的方式启动 MySQL 服务器,通常用于恢复忘记的 root 密码,但这是一个安全风险。
auth_native_password=1: 启用 MySQL 5.7 及以上版本的原生密码认证。 - 日志设置
log_error: 错误日志文件的路径。
general_log: 记录所有客户端连接和查询的日志。
slow_query_log: 记录执行时间超过特定阈值的慢查询。
log_queries_not_using_indexes: 记录未使用索引的查询。 - 复制设置
master_host 和 master_user: 主服务器的地址和复制用户。
master_password: 复制用户的密码。
master_log_file 和 master_log_pos: 用于复制的日志文件和位置。
4. MySQL表格
表格的列属性
MySQL 数据类型
MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。
MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
5. MySQL客户端
安装 MySQL 后,你可以通过以下几种方式连接到 MySQL 服务端:
1、使用命令行客户端连接
2、使用图形化工具连接
常用 MySQL 图形化管理工具:
MySQL Workbench(官方工具):https://www.mysql.com/cn/products/workbench/
Navicat(付费):https://www.navicat.com/
DBeaver:https://dbeaver.io/
phpMyAdmin(基于Web):https://www.phpmyadmin.net/
DbGate下载地址:https://dbgate.org/download/
6. python使用MySQL数据库
pip install mysql-connector-python
pip install pymysql
ORM 框架
对于复杂应用,可以考虑使用 ORM (对象关系映射) 框架,如 SQLAlchemy 或 Django ORM。
7. 防止SQL注入
防范 SQL 注入:
使用参数化查询或预编译语句: 使用参数化查询(Prepared Statements)可以有效防止 SQL 注入,因为它们在执行查询之前将输入数据与查询语句分离。
输入验证和转义: 对用户输入进行适当的验证,并使用合适的转义函数(如mysqli_real_escape_string)来处理输入,以防止恶意注入。
最小权限原则: 给予数据库用户最小的权限,确保它们只能执行必要的操作,以降低潜在的损害。
使用ORM框架: 使用对象关系映射(ORM)框架(如Hibernate、Sequelize)可以帮助抽象 SQL 查询,从而降低 SQL 注入的风险。
禁用错误消息显示: 在生产环境中,禁用显示详细的错误消息,以防止攻击者获取有关数据库结构的敏感信息。
相关文章:

MySQL关系型数据库学习
学习参考链接:https://www.runoob.com/mysql/mysql-tutorial.html Windows 安装MYSQL服务端的步骤:https://www.runoob.com/w3cnote/windows10-mysql-installer.html 1. 概念学习 MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不…...

嵌入式硬件篇---龙芯2k1000串口
针对串口错误 “device reports readiness to read but returned no data (Device disconnected or multiple access on port?)” 的排查和解决方法 硬件方面 检查连接 确认串口设备(如串口线、连接的模块等)与龙芯设备之间的物理连接是否牢固…...
4-C#的不同窗口传值
C#的不同窗口传值 1.通过构造函数传值 this.Hide(); Form1 form01 new Form1(textBox2.Text); //Application.Run(form01); form01.Show();public Form1(string aaa) {InitializeComponent();label12.Text aaa; }2.全局类传值 namespace WindowsFormsApp1 {public class G…...

谷歌地图苹果版v6.138.2 - 前端工具导航
谷歌地图(Google maps)苹果版是是由谷歌官方推出的一款手机地图应用。软件功能强大,支持本地搜索查找世界各地的地址、地点和商家;支持在街景视图中查看世界各地的360度全景图;支持查找乘坐火车、公交车和地铁的路线,或者查找步行…...

NSSCTF [LitCTF 2025]test_your_nc
[复现]绕过学的还是太差了,多积累吧 题目 题目: 给了一个python文件 #!/bin/python3 import osprint("input your command")blacklist [cat,ls, ,cd,echo,<,${IFS},sh,\\]while True:command input()for i in blacklist:if i in com…...
第十九章 正则表达式
第十九章 正则表达式 文本型数据在所有的类UNIX系统(如 Linux)中会扮演着重要角色,在完全领会这些工具的全部特征之前,要先了解一下工具最为复杂的用法和相关技术:正则表达式。 什么是正则表达式 简单地说,正则表达式是一种用于…...
browser-use Agent 日志链路分析
browser-use Agent 日志链路分析 本节详细梳理 browser-use Agent 的日志输出,从 Agent 初始化到每一步的行为日志,帮助理解其行为轨迹。 1. Agent 初始化阶段 日志点: logger.info(🧠 Starting a browser-use agent ...) 记录 …...

Qwen3高效微调
高效微调 场景、模型、数据、算力 高效微调的应用场景 对话风格微调:高效微调可以用于根据特定需求调整模型的对话风格。例如,针对客服系统、虚拟助理等场景,模型可以通过微调来适应不同的 语气、礼貌程度 或 回答方式,从而在与…...

Gitee Wiki:重塑关键领域软件研发的知识管理范式
在数字化转型浪潮席卷全球的当下,关键领域软件研发正面临前所未有的知识管理挑战。传统文档管理模式的局限性日益凸显,知识传承的断层问题愈发严重,团队协作效率的瓶颈亟待突破。Gitee Wiki作为新一代知识管理平台,正在通过技术创…...

redis的哨兵模式和Redis cluster
目录 一. redis的主从复制 二. 哨兵模式 2.1 定义 2.2 作用 2.3 配置实例 三. Redis cluster 3.1 定义 3.2 作用 3.3 配置实例 1. 新建集群文件目录 2. 准备可执行文件到每个文件夹 3. 开启群集功能 4. 启动redis节点 5. 查看是否启动成功 6. 启动集群 7. 测试…...
MySQL计算精度计算加减乘除取模方式和方法总计
以下是 MySQL 中常用计算方式和方法 的总结,涵盖不同场景下的使用方式及示例说明: 1. 基本算术运算 适用场景: 对表中的字段或数值进行基础数学运算(加、减、乘、除、取模)。适用于单条记录的字段计算(如单价+税金、折扣后的价格等)。运算符: 运算符描述示例+加法SELE…...

农业机器人的开发
农业机器人的开发 喷农药机器人 番茄采摘机器人 葡萄采摘机器人 黄瓜采摘机器人 西瓜采摘机器人 蘑菇采摘机器人 草莓采摘机器人 草莓采摘机器人综述 视觉系统 CCD摄像机,距离传感器,PC计算机 其中CCD摄像机的作用是进行彩色图像的采集和进行果…...

Swift 解锁 LeetCode 热门难题:不改数组也能找出重复数字?
文章目录 摘要描述题解答案题解代码分析解读: 示例测试及结果时间复杂度空间复杂度总结实际场景类比可运行 Demo(Swift Playground)未来展望 摘要 在数组中找出唯一的重复数字,听起来像一道简单的题目,但如果你不能修…...
2025年微信小程序开发:趋势、最佳实践与AI整合
引言 微信小程序自2017年推出以来,已成为中国互联网生态中不可或缺的一部分。根据最新数据,截至2024年,微信小程序的日活跃用户超过4.5亿,总数超过430万个,95%的中国企业拥有自己的小程序(WeChat Mini Pro…...

【深度学习】15. Segment Anything Model (SAM) :基于提示的分割新时代
Segment Anything Model (SAM) :基于提示的分割新时代 基本介绍 The first foundation model for promptable segmentation. Segment Anything Model(简称 SAM)是 Meta AI 于 2023 年提出的一种通用型图像分割基础模型。与以往分割模型不同&…...

Java从入门到精通 - 常用API(一)
常用 API 此笔记参考黑马教程,仅学习使用,如有侵权,联系必删 文章目录 常用 API1. 包代码演示 2. String2.1 String 概述代码演示总结 2.2 String 的常用方法代码演示 2.3 String 使用时的注意事项第一点第二点代码演示 总结题目 2.4 String…...
SQL 筛选出在表1但不在表2中的数据
SQL 筛选出在表1但不在表2中的数据 在SQL中,要筛选出存在于表1但不存在于表2中的数据,有几种常见的方法: 方法1:使用LEFT JOIN WHERE IS NULL SELECT t1.* FROM table1 t1 LEFT JOIN table2 t2 ON t1.join_key t2.join_key W…...
MATLAB实战:实现数字调制解调仿真
以下是使用MATLAB实现BPSK和QPSK数字调制解调仿真的完整代码。该代码包括调制、AWGN信道、匹配滤波/相关解调、星座图绘制以及误码率计算与理论值比较。 %% 清理环境 clear all; close all; clc; %% 参数设置 numBits 100000; % 传输比特数 EbN0_dB 0:2:10; …...
ccf中学生计算机程序设计入门篇课后题p164页test(1)-2 输入一个数,统计这个数二进制中1的个数
include <iostream> using namespace std;int main() {int x;int n 0;// 输入数据cin >> x;// 统计x二进制中1的个数for (n 0; x ! 0; x & x - 1) {n;}// 输出结果cout << n << endl;return 0; }程序解释: 输入:程序从标…...

实现Cursor + Pycharm 交互
效果演示: 直接可以在cursor或Pycharm中点击右键点击,然后就可以跳转到另一个应用的对应位置了 使用方法: 分别在两个应用中安装插件【Switch2Cursor Switch2IDEA,这两个插件分别安装在 IDEA 和 Cursor 中】: Switc…...

C++标准模板库
C标准库参考: C 标准库-CSDN博客 标准模板库STL C 标准库 和 STL 的关系 1. 严格来说,STL ≠ C 标准库 STL(Standard Template Library) 是 C 标准库的一个子集,主要提供泛型编程相关的组件(如容器、迭代器…...

dvwa6——Insecure CAPTCHA
captcha:大概是“我不是机器人”的一个勾选框或者图片验证 LOW: 先输入密码正常修改试一下(123),发现报错 查看源码: <?phpif( isset( $_POST[ Change ] ) && ( $_POST[ step ] 1 ) ) {// Hide the C…...
【机器学习及深度学习】机器学习模型的误差:偏差、方差及噪声
机器学习模型的误差分析 V1.0机器学习模型的衡量准则概念引入机器学习模型误差分析误差出现的原因及消除 V1.0 机器学习模型的衡量准则 衡量机器学习模型的好坏可以考虑以下几个方面: 偏差(Bias): 在充分训练的情况下࿰…...

【学习笔记】On the Biology of a Large Language Model
On the Biology of a Large Language Model 1 Introduction 目标是对这些模型的内部工作机制进行逆向工程,从而更好地理解它们,并评估它们是否适合特定用途。 正如细胞是生物系统的基本构建单元,我们假设特征是模型内部计算的基本单位。仅仅…...

飞腾D2000,麒麟系统V10,docker,ubuntu1804,小白入门喂饭级教程
#下载docker Index of linux/static/stable/ 根据电脑的CPU类型选择: Intel和AMD选x86_64飞腾D2000选aarch64 #选择较新的版本 #在包含下载的docker-XX.X.X.tgz的文件夹中右键->打开终端 # 解压安装包(根据实际下载的文件) tar -zxvf …...

星野录(博客系统)测试报告
目录 一. 项目背景 二、项目功能 三、测试计划 1. 功能测试 1.1 测试用例 1.2 执行测试部分操作截图 2. 使用selenium进行自动化测试 2.1 添加相关依赖 2.2 登录页面测试 3.3 注册页面测试 3.4 博客列表页面测试 3.5 博客详情页测试 3.6 博客编辑页面测试 3.7 个人…...

使用 Java 实现一个简单且高效的任务调度框架
目录 一、任务调度系统概述 (一)任务调度的目标 (二)任务调度框架的关键组成 二、任务状态设计 (一)任务状态流转设计 (二)任务表设计(SQL) 三、单机任务调度实现 (一)获取待处理任务 (二)执行任务 代码实现(单线程版本) (三)多线程提高吞吐量 四…...

2022—2025年:申博之路及硕士阶段总结
文章目录 1 前景概要2 打造神兵利器2.1 夺天地之精2.2 锻兵魂之形2.3 契人兵之命 3 潜心闭关修炼3.1 第一阶段:苦心智3.2 第二阶段:劳筋骨3.3 第三阶段:摧意志 4 突破晋级4.1 突破失败4.2 聚气凝神4.3 心魔再现4.4 新起点 5 回顾及深思 1 前景…...

项目执行中缺乏灵活应对机制,如何增强适应性?
项目执行中缺乏灵活应对机制可以通过建立风险预警机制、培养团队快速响应能力、制定动态调整方案、加强团队沟通协作、引入敏捷管理理念来增强适应性。 其中,培养团队快速响应能力尤为重要。这种能力意味着当项目遇到突发状况时,团队能迅速评估问题、确定…...

Agentic Workflow是什么?Agentic Workflow会成为下一个AI风口吗?
无论是想要学习人工智能当做主业营收,还是像我一样作为开发工程师但依然要运用这个颠覆开发的时代宠儿,都有必要了解、学习一下人工智能。 近期发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,入行门槛低&#x…...