当前位置: 首页 > news >正文

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 版本中可能有所不同,但是一般包含以下几个部分:

  1. 基本设置
    basedir: MySQL 服务器的基本安装目录。
    datadir: 存储 MySQL 数据文件的位置。
    socket: MySQL 服务器的 Unix 套接字文件路径。
    pid-file: 存储当前运行的 MySQL 服务器进程 ID 的文件路径。
    port: MySQL 服务器监听的端口号,默认是 3306。
  2. 服务器选项
    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: 服务器的默认排序规则。
  3. 性能调优
    innodb_buffer_pool_size: InnoDB 存储引擎的缓冲池大小,这是 InnoDB 性能调优中最重要的参数之一。
    key_buffer_size: MyISAM 存储引擎的键缓冲区大小。
    table_open_cache: 可以同时打开的表的缓存数量。
    thread_concurrency: 允许同时运行的线程数。
  4. 安全设置
    skip-networking: 禁止 MySQL 服务器监听网络连接,仅允许本地连接。
    skip-grant-tables: 以无需密码的方式启动 MySQL 服务器,通常用于恢复忘记的 root 密码,但这是一个安全风险。
    auth_native_password=1: 启用 MySQL 5.7 及以上版本的原生密码认证。
  5. 日志设置
    log_error: 错误日志文件的路径。
    general_log: 记录所有客户端连接和查询的日志。
    slow_query_log: 记录执行时间超过特定阈值的慢查询。
    log_queries_not_using_indexes: 记录未使用索引的查询。
  6. 复制设置
    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 注入的风险。

禁用错误消息显示: 在生产环境中,禁用显示详细的错误消息,以防止攻击者获取有关数据库结构的敏感信息。

在这里插入图片描述

相关文章:

  • 第三发 DSP 点击控制系统
  • 【MATLAB代码】制导方法介绍与例程——三点法|三维空间,动态目标导引(订阅专栏后可直接查看源代码)
  • leetcode hot100 链表(一)
  • matlab实现求解兰伯特问题
  • Axure形状类组件图标库(共8套)
  • xTimerChangePeriod无需先Stop
  • 我的世界模组开发——方块实体(1)
  • 部署过程中--常用Linux命令
  • centos中的ulimit命令
  • AD转嘉立创EDA
  • 手动删除网页上的禁止复制事件
  • C# Onnx 动漫人物头部检测
  • spacesniffer、WizTree等空间分析软件右键卡死?网盘惹的祸!
  • 学习路之PHP--easyswoole使用视图和模板
  • Spring Bean 为何“难产”?攻克构造器注入的依赖与歧义
  • Q:知识库-文档的搜索框逻辑是怎样的?
  • 【论文解读】ReAct:从思考脱离行动, 到行动反馈思考
  • CAMEL-AI开源自动化任务执行助手OWL一键整合包下载
  • 普中STM32F103ZET6开发攻略(三)
  • 什么是 /proc/buddyinfo
  • 风水网站开发/中国站长站
  • 包装设计的网站/滨州seo招聘
  • 设计方案格式模板/前端性能优化有哪些方法
  • 做网站比较大的公司/seo的搜索排名影响因素主要有
  • 做文具的网站/seo服务收费
  • 看网站是不是WP做的/口碑营销的概念是什么