# 1 使用mysql数据库
# 2 创建数据库,项目配置文件修改
# 3 后期公司的项目,不会使用root用户作为项目的数据库用户
-数据库 root用户权限很高
-root用户,知道秘密---》能够访问所有数据库
-一旦root用户信息泄露--》所有库都能能访问---》存在问题
-给每个项目创建一个数据库用户--》即使当前项目的用户数据泄露---》只会泄露当前项目中的库中的表
-多个项目使用一个数据库软件--》不同数据库
# 4 创建普通用户,给这个用户只授权 某个 库的权限
#1 创建luffy库,给项目使用
# 在mysql8中的utf8 就是utf8mb3
create database luffy default charset=utf8mb4;
#2 查看用户
SELECT User, Host FROM mysql.user;
#3 创建用户
CREATE USER 'luffy'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'luffy'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON luffy.* TO 'luffy'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON luffy.* TO 'luffy'@'%' WITH GRANT OPTION;
# 5 使用 luffy 用户,密码是:Luffy123? 登录了,只能看到luffy库
【一】创建普通用户
【1】创建luffy库,给项目使用
create database luffy default charset=utf8mb4;
【2】查看用户
SELECT User, Host FROM mysql.user;
【3】创建用户
#这行命令创建了一个新用户 luffy,该用户只能从 localhost 连接到数据库
CREATE USER 'luffy'@'localhost' IDENTIFIED BY '123456';
#这行命令创建了另一个同名用户 luffy,但这次 @'%' 表示这个用户可以从任何主机连接到数据库
CREATE USER 'luffy'@'%' IDENTIFIED BY '123456';
#这行命令为 localhost 上的 luffy 用户授予了 luffy 数据库的所有权限。WITH GRANT OPTION 意味着该用户还可以将这些权限授予其他用户
GRANT ALL PRIVILEGES ON luffy.* TO 'luffy'@'localhost' WITH GRANT OPTION;
#这行命令为远程户授予了 luffy 数据库的所有权限
GRANT ALL PRIVILEGES ON luffy.* TO 'luffy'@'%' WITH GRANT OPTION;
- 使用 luffy 用户,登录了,只能看到luffy库
- luff用户 %可以远程访问
![image-20240509163727124](https://img2023.cnblogs.com/blog/3331555/202405/3331555-20240509165732850-1930952305.png)
【二】后端User表
pip install mysqlclient
【1】链接数据库
#防止数据库被盗
user = os.environ.get('MYSQL_USER', 'luffy')
password = os.environ.get('MYSQL_PASSWORD', '123456')
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'luffy',
'HOST': '127.0.0.1',
'PORT': '3307',
'USER': user,
'PASSWORD': password
}
}
【2】创建User表
from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
mobile = models.CharField(max_length=11, unique=True)
# 需要pillow包的支持
icon = models.ImageField(upload_to='icon', default='icon/default.png')
class Meta:
db_table = 'luffy_user'
verbose_name = '用户表'
verbose_name_plural = verbose_name
def __str__(self):
return self.username
# 配置文件
# 扩写auth的user表
AUTH_USER_MODEL='user.User'
#media配置
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# 安装pillow
pip install pillow
- 运行python manage.py makemigrations 出现的问题:
#去django.db.backends.mysql.base去注销
if version < (1, 4, 3):
raise ImproperlyConfigured(
"mysqlclient 1.4.3 or newer is required; you have %s." % Database.__version__
)
【3】迁移表
python manage.py makemigrations
python manage.py migrate
#1 配置文件
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
#2 创建文件夹
# 3 配一个路由
path('media/<path:path>', serve, {'document_root': settings.MEDIA_ROOT})
### 补充
auth的user表,密码加密方式
-使用sha256+使用SECRET_KEY作为密码+盐
自定义用户表,参照这种方式设置密码这个字段