后端数据库和用户表创建

# 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

image-20240509170107680

【二】后端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

【4】开启media访问

#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作为密码+盐
自定义用户表,参照这种方式设置密码这个字段
posted @ 2024-05-27 12:03  -半城烟雨  阅读(3)  评论(0编辑  收藏  举报