2.4 MySQL安装配置
2025-02-17
概述
- Django自带轻量级的数据库SQLite,不适用于线上应用
- Django 默认使用 SQLite 数据库,但在生产环境中通常使用 MySQL 这样的企业级数据库。本章介绍:
- MySQL 的安装步骤
- 环境配置方法
- 数据库和用户管理
注意: MySQL 5.7 和 8.0 版本在安装和使用上有一些重要区别,本文将分别说明。
2.4.1 安装MySQL
Windows 安装
MySQL 5.7
- 从 MySQL 官网 下载安装包
- 选择 MySQL 5.7 版本
- 下载 MSI 安装程序
- 运行安装程序,按提示完成安装
- 配置环境变量:将 MySQL 的 bin 目录添加到 PATH
MySQL 8.0
- 下载最新的 MySQL 8.0 安装包
- 安装时注意:
- 选择认证方式(建议使用传统密码认证)
- 配置 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.logMySQL 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 mysqldmacOS 安装
MySQL 5.7
# 指定版本安装
brew install mysql@5.7
# 链接 5.7 版本
brew link --force mysql@5.7MySQL 8.0
# 使用 Homebrew 安装
brew install mysql
# 启动服务
brew services start mysql2.4.2 配置
环境变量配置
注意: 环境变量配置对两个版本基本相同
Windows
- 打开系统环境变量设置
- 编辑 PATH 变量
- 添加 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 mysql2.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';最佳实践
安全性
- 使用强密码
- 限制远程访问
- 定期更新密码
性能优化
- 合理配置内存
- 优化查询性能
- 定期维护
备份策略
- 定期备份数据
- 测试恢复流程
- 保存多个版本
版本选择
- MySQL 5.7:更稳定,兼容性好
- MySQL 8.0:性能更好,功能更多
注意:
- 及时更新安全补丁
- 定期检查日志
- 遵循最小权限原则
- 注意版本兼容性问题