05-luffy数据库

luffy数据库

一、创建数据库

# 1.管理员连接数据库
mysql -uroot -p密码

# 2.创建数据库
create database luffy default charset=utf8;

# 3.查看用户
select user,host,password from mysql.user;

# 5.7之上的的版本查看命令 (提示: 5.7之后password字段变成了authentication_string字段)
select user,host,authentication_string from mysql.user;

二、为指定数据库配置指定账户

提示: 以下的所有操作都是基于Root用户

# 设置权限账号密码
# 授权账号命令:grant 权限(create, update) on 库.表 to '账号'@'host' identified by '密码'

# 1.配置任意ip都可以连入数据库的账户 (提示:%表示任意的地址都可以远程链接)
grant all privileges on luffyapi.* to 'luffyapi'@'%' identified by 'luffyapi';

# 2.由于数据库版本的问题,可能本地还连接不上,就给本地用户单独配置
grant all privileges on luffyapi.* to 'luffyapi'@'localhost' identified by 'luffyapi';

# 3.刷新一下权限。 (提示: 如果不刷新,只会在下次登录时生效。)
flush privileges;

# 4.使用Navicat连接数据库

# 只能操作luffy数据库的账户
账号:luffyapi
密码:luffyapi

三、配置文件

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'luffyapi',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'USER': 'luffyapi',
        'PASSWORD': 'luffyapi',
        'CHARSET': 'utf8',
    }
}

# 提示: 这里放在__init__.py或者配置文件中也可以。 本质只要是项目启动时加载文件会加载到它即可
import pymysql
pymysql.install_as_MySQLdb()

拓展:项目上线, PASSWORD密码不因该存放到prod.py配置文件中。 因此存放到服务器中, 通过环境变量的获取存放。

# 伪代码实例
password = sys.path.get('mysql_password', 'xxxx')


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'luffy',
        'USER': 'luffy',
        'PASSWORD': password,
        'HOST': 'localhost',
        'PORT': 3306
    }
}

四、Django2.0.7版本以后使用pymysql启动项目出现的2个问题

提示: Django采用2.0.7版本之后很可能出现以下问题,需要修改源代码

第一步: 注释抛出的异常的2行代码。

image-20210207115532795

第二步: 把decode修改成encode, 再将之前的那一行注释。

image-20210207115321681

五、mysql.MySQLdb()与mysqlclient的关系

点我

原文地址:https://www.cnblogs.com/borntodie/p/14430832.html