【 一 】建立数据库
-
创建库: 命令(指定编码)
-
创建用户: 并授权
-
用户: luffy: 密码xxxxxx , 只授予luffy库权限
-
-
使用mysql创建lufy数据库
-
root账号和密码--->万一泄露---》整个数据库就不安全了。
创建个用户,这个用户只对当前项目 库 有权限
-
解决方法:
-
给每个项目创建一个数据库用户
-
在mysql8中的utf8 就是utf8mb3
create database luffy default charset=utf8mb4; #2 查看用户 SELECT User, Host FROM mysql.user; #3 创建用户 CREATE USER 'luffy'@'localhost' IDENTIFIED BY '123123?'; CREATE USER 'luffy'@'%' IDENTIFIED BY '123123?'; # 授权 GRANT ALL PRIVILEGES ON luffy.* TO 'luffy'@'localhost' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON luffy.* TO 'luffy'@'%' WITH GRANT OPTION;
-
创建luffy库
create database luffy default charset=utf8mb4;
这条命令在MySQL中创建了一个名为luffy
的数据库,并指定其默认字符集为utf8mb4
。utf8mb4
是一个能够存储四字节Unicode字符的字符集,它支持包括emoji在内的广泛字符。 \2. 查看用户
SELECT User, Host FROM mysql.user;
这条命令从mysql.user
系统表中查询所有的MySQL用户以及他们对应的主机(Host
)信息。这可以帮助你了解当前MySQL服务器上有哪些用户。 \3. 创建用户
CREATE USER 'luffy'@'localhost' IDENTIFIED BY 'Luffy123?'; CREATE USER 'luffy'@'%' IDENTIFIED BY 'Luffy123?';
这两条命令在MySQL中创建了两个用户,但他们的Host
(来源地址)不同。第一个用户'luffy'@'localhost'
只能从localhost
(即该MySQL服务器本身)访问。第二个用户'luffy'@'%'
可以从任何地址访问(%
是一个通配符,代表任何主机)。这两个用户都有相同的密码Luffy123?
。 \4. 授权
GRANT ALL PRIVILEGES ON luffy.* TO 'luffy'@'localhost' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON luffy.* TO 'luffy'@'%' WITH GRANT OPTION;
-
注意
你实际上是授予了名为 luffy
的用户(无论是从 localhost
还是从任何其他主机 %
连接)对 luffy
数据库的所有权限,包括增删改查(SELECT, INSERT, UPDATE, DELETE)以及授予其他用户权限的权限(WITH GRANT OPTION)。
这意味着任何使用 luffy
用户名和相应密码的用户(无论是从 localhost
还是从远程主机连接)都可以对 luffy
数据库执行任何操作,包括查看、修改、删除表中的数据,以及创建、修改或删除表本身。
其他用户(非 luffy
用户)默认情况下是看不到 luffy
数据库的内容的,除非他们也被授予了对 luffy
数据库的相应权限。但是,他们仍然可以看到 luffy
数据库的存在,因为 SHOW DATABASES;
命令会列出服务器上的所有数据库,无论用户是否有权限访问它们。
【 二 】连接数据库
【 1 】一般连接(傻瓜连接)
-
个人练练就可以了
# 如果用户和密码直接写死 ----》 代码泄露 ----》 这样就很不安全!!! DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'luffy', 'HOST': '127.0.0.1', 'PORT': '3306', 'USER': 'luffy', 'PASSWORD': '123123?' } }
-
安装 mysqlclient
# pip install mysqlclient
##
【 2 】建议使用
-
代码
# seetings.py user = os.environ.get("MYSQL_USE",'luffy') password = os.environ.get("MYSQL_PWD","123123?") DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'luffy', 'HOST': '127.0.0.1', 'PORT': '3306', 'USER': user, 'PASSWORD': password } }
-
编辑环境变量
做完之后就会显示
这里上面显示
你的 Django 项目正在运行开发服务器,并且检测到了未应用的迁移。在继续之前,建议你应用这些迁移,以确保项目正常运行。
你可以运行以下命令应用迁移:
python manage.py migrate
这将应用所有未应用的迁移,使数据库与项目的当前状态保持同步。完成后,重新启动开发服务器,你的项目应该可以正常运行了。
【 3 】创建表
-
注意要在根目录进行数据迁移!!!
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 = 'lufy_user' verbose_name = '用户表' verbose_name_plural = verbose_name def __str__(self): return self.username # settings.py配置文件 # 扩写auth的user表 在AbstractUser必须这样 AUTH_USER_MODEL='user.User'
-
这个就说明缺少需要pillow包的支持
-
注意要在根目录进行数据迁移!!!
# python manage.py makemigrations # python manage.py migrate