linRichielinRichie
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
    • Python学习指南
  • 快速开始

    • Python: 输入与输出 (I/O)
    • Python: 异常处理 try-except
    • Python: List深入概述
    • Python: 面向对象编程(OOP)
  • Python 语法库函数

    • 语法库目录
    • 库

      • library目录
      • argparse:解析命令行参数
      • difflib:比较序列并生成差异信息
      • dnspython: DNS处理库
      • IPy:IP地址处理库
      • logging:记录和管理日志信息
      • os:访问和操作操作系统
      • psutil:系统性能信息库
      • re:正则表达式库
      • smtplib:邮件发送库
    • 函数

      • function目录
      • any() 函数
      • input 函数
      • lambda 和 map 函数
      • reversed()函数
      • zip()函数
    • 语句

      • statement目录
      • import 语句
      • Try/Exception 异常
    • 概念

      • concept目录
      • 深拷贝与浅拷贝
      • 列表、字典与元组
      • 文件读写
      • IO: 输入与输出
      • 逻辑判断与条件语句
      • OOP 面向对象:class
      • OOP: 面向对象编程
  • SQLAlchemy

    • 获取insert或者update的id
  • Pandas

    • Pandas目录
    • Pandas:基础操作
    • Pandas:数据处理与转换
    • Pandas: 数据写入 excel 表格
  • Python前端框架

    • Flask

      • 1. Flask简介
      • 2. Flask程序基本结构
      • 3. Flask请求-响应循环
      • 4. flask案例: 框架网页查询IP
      • Python: Flask中的GitHub OAuth
    • Django

      • chapter-01:Django框架认识

        • 1.1 Django的产生背景
        • 1.2 MTV设计模式
        • 1.3 Django 主要功能模块
      • chapter-02:开发环境配置

        • 2.1 Python的安装与配置
        • 2.2 虚拟环境安装与配置
        • 2.3 Django安装与配置
        • 2.4 MySQL安装配置
      • chapter-03:项目框架搭建

        • 3.1 Django管理工具-创建项目骨架
        • 3.2 修改项目的默认配置
        • 3.3 初始化项目环境
      • chapter-04:ORM应用与原理剖析

        • 4.1 构建POST应用需要的数据集
        • 4.2 Model相关的概念和使用方法
        • 4.3 Model的查询操作API
        • 4.4 ORM实现原理
      • chapter-05:Django管理后台

        • 5.1 将Model注册到管理后台
        • 5.2 管理后台实现原理
      • chapter-06:视图

        • 6.1 视图基础
        • 6.2 视图的高级特性和快捷方法
        • 6.3 基于类的通用视图
      • chapter-07:模板系统

        • 7.1 模板系统基础
        • 7.2 模板语言
      • chapter-08:表单系统

        • 8.2 使用表单系统实现表单: ModelForm
      • chapter-09:用户认证系统

        • 9.1 用户与身份认证
        • 9.2 权限管理
        • 9.3 用户认证系统应用
      • chapter-10:Django路由系统

        • 10.1 路由系统基础
      • chapter-11:Django中间件

        • 11.1 中间件基础
  • Python例子

    • Python: Linux的Shell命令
    • Python: PEP8自动格式化代码
    • Python: pip操作
    • Python: 业务服务监控
    • Python: 从文件逐行读取数据
    • 将链表转换为字符串
    • Python: 检查URL是否能正常访问
    • Python: 爬取网易云音乐
    • Python: 读取目录下的所有内容
    • 案例研究:文本统计
  • Python爬虫

    • 数据解析工具:Xpath
  • 算法题

    • 02:两数相加
    • 09:回文数
    • 13:罗马数值转换为整数
    • 14:最长公共前缀

2.4 MySQL安装配置

  • 概述
  • 2.4.1 安装MySQL
    • Windows 安装
    • Linux 安装
    • macOS 安装
  • 2.4.2 配置
    • 环境变量配置
    • 服务管理
  • 2.4.3 MySQL用户管理
    • 创建用户
    • 用户管理
  • 2.4.4 安全配置
    • MySQL 5.7
    • MySQL 8.0
  • 最佳实践

概述

  • Django自带轻量级的数据库SQLite,不适用于线上应用
  • Django 默认使用 SQLite 数据库,但在生产环境中通常使用 MySQL 这样的企业级数据库。本章介绍:
    • MySQL 的安装步骤
    • 环境配置方法
    • 数据库和用户管理

注意: MySQL 5.7 和 8.0 版本在安装和使用上有一些重要区别,本文将分别说明。

2.4.1 安装MySQL

Windows 安装

MySQL 5.7

  1. 从 MySQL 官网 下载安装包
    • 选择 MySQL 5.7 版本
    • 下载 MSI 安装程序
  2. 运行安装程序,按提示完成安装
  3. 配置环境变量:将 MySQL 的 bin 目录添加到 PATH

MySQL 8.0

  1. 下载最新的 MySQL 8.0 安装包
  2. 安装时注意:
    • 选择认证方式(建议使用传统密码认证)
    • 配置 root 密码
    • 选择服务配置

Linux 安装

MySQL 5.7

# Ubuntu/Debian
# 添加 MySQL 5.7 仓库
wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb

# 安装
sudo apt update
sudo apt install mysql-server=5.7*

# CentOS/RHEL
sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
sudo yum install mysql-server
sudo systemctl start mysqld

# 获取临时密码
sudo grep 'temporary password' /var/log/mysqld.log

MySQL 8.0

# Ubuntu/Debian
curl -fsSL https://repo.mysql.com/mysql-apt-config_0.8.24-1_all.deb -o mysql-apt-config.deb
sudo dpkg -i mysql-apt-config.deb
sudo apt update
sudo apt install mysql-server

# CentOS/RHEL
sudo dnf install @mysql
sudo systemctl start mysqld

macOS 安装

MySQL 5.7

# 指定版本安装
brew install mysql@5.7

# 链接 5.7 版本
brew link --force mysql@5.7

MySQL 8.0

# 使用 Homebrew 安装
brew install mysql

# 启动服务
brew services start mysql

2.4.2 配置

环境变量配置

注意: 环境变量配置对两个版本基本相同

Windows

  1. 打开系统环境变量设置
  2. 编辑 PATH 变量
  3. 添加 MySQL bin 目录路径

Linux

将以下内容添加到 ~/.bashrc 或 ~/.bash_profile:

# MySQL 环境变量
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/support-files

# 使配置生效
source ~/.bashrc

服务管理

# 启动服务
sudo systemctl start mysql

# 设置开机启动
sudo systemctl enable mysql

# 查看状态
sudo systemctl status mysql

2.4.3 MySQL用户管理

注意: MySQL 8.0 的用户管理和权限系统有重要变化

创建用户

MySQL 5.7

-- 登录 MySQL
mysql -u root -p

-- 创建数据库
CREATE DATABASE django_bbs DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

MySQL 8.0

-- 创建数据库(注意字符集和排序规则)
CREATE DATABASE django_bbs
CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci;

用户管理

MySQL 5.7

-- 创建用户
CREATE USER 'django'@'localhost' IDENTIFIED BY 'your_password';

-- 授予权限
GRANT ALL PRIVILEGES ON django_bbs.* TO 'django'@'localhost';

-- 允许远程访问(如果需要)
GRANT ALL PRIVILEGES ON django_bbs.* TO 'django'@'%';

MySQL 8.0

-- 创建用户(注意认证方式)
CREATE USER 'django'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';

-- 授予权限(新的权限系统)
GRANT ALL ON django_bbs.* TO 'django'@'localhost';

-- 允许远程访问
CREATE USER 'django'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
GRANT ALL ON django_bbs.* TO 'django'@'%';

-- 使权限生效
FLUSH PRIVILEGES;

2.4.4 安全配置

MySQL 5.7

-- 修改 root 密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

-- 删除匿名用户
DELETE FROM mysql.user WHERE User='';

MySQL 8.0

-- 修改认证方式和密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';

-- 禁止 root 远程登录
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');

-- 收紧权限
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'django'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE ON django_bbs.* TO 'django'@'localhost';

最佳实践

  1. 安全性

    • 使用强密码
    • 限制远程访问
    • 定期更新密码
  2. 性能优化

    • 合理配置内存
    • 优化查询性能
    • 定期维护
  3. 备份策略

    • 定期备份数据
    • 测试恢复流程
    • 保存多个版本
  4. 版本选择

    • MySQL 5.7:更稳定,兼容性好
    • MySQL 8.0:性能更好,功能更多

注意:

  • 及时更新安全补丁
  • 定期检查日志
  • 遵循最小权限原则
  • 注意版本兼容性问题
最近更新时间:
Prev
2.3 Django安装与配置