05.luffy数据库的创建
一、创建数据库
-
新建一个luffy数据库
-
可以使用图形化工具Navicat创建,鼠标点点即可
-
可以使用命令行创建
# 1.管理员连接数据库 mysql -uroot -p密码 # 2.创建数据库 create database luffy default charset=utf8;
-
-
进入到该数据库查看数据库用户
# 使用luffy数据库
use luffy
# 查看用户
select user,host,password from mysql.user;
# 5.7之上的的版本查看命令 (提示: 5.7之后password字段变成了authentication_string字段)
select user,host,authentication_string from mysql.user;
二、创建用户,授予权限
注意:基于root用户进行的操作
创建luffy用户,授予luffy库所有权限
# 设置权限账号密码
# 授权账号命令:grant 权限(create, update) on 库.表 to '账号'@'host' identified by '密码'
# 1.配置任意ip都可以连入数据库的账户 (提示:%表示任意的地址都可以远程链接)
grant all privileges on luffyapi.* to 'luffyapi'@'%' identified by 'Luffy123?';
# 2.由于数据库版本的问题,可能本地还连接不上,就给本地用户单独配置
grant all privileges on luffyapi.* to 'luffyapi'@'localhost' identified by 'Luffy123?';
# 3.刷新一下权限。 (提示: 如果不刷新,只会在下次登录时生效。)
flush privileges;
# 只能操作luffy数据库的账户
账号:luffyapi
密码:Luffy123?
三、在Django项目中配置
1.在 setting.py (dev.py)中配置
# 1.安装配置数据库mysql
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'luffy',
'USER': 'luffy',
'PASSWORD': 'Luffy123?',
'HOST': 'localhost',
'PORT': 3306,
'CHARSET': 'utf8',
}
}
# 2.安装pymysql,或者是mysqlclient
-运气好:一把装好就用mysqlclient
-pip3 install mysqlclient
-或者使用pymysql(django版本超过2.0.7,需要改源码)
-使用pymysql不要忘了在配置文件中加入
import pymysql
pymysql.install_as_MySQLdb()
问题:如果项目上线后代码泄露,数据库密码很容易泄露,安全性不高,所以,一般我们
PASSWORD
密码不因该存放到pro.py
或者dev.py
配置文件中。 因此存放到服务器中, 通过环境变量的获取存放。
2.通过服务器环境变量来存放/获取密码
password = os.getenv('mysql_password','Luffy12333') # 或者下面语句
# password = os.environ.get('MYSQL_PASSWORD','Luffy12333'))
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'luffy',
'USER': 'luffy',
'PASSWORD': password,
'HOST': 'localhost',
'PORT': 3306
}
}
import pymysql
pymysql.install_as_MySQLdb()
Windows配置完环境变量需要重启电脑,否则启动项目报错
Linux重新加载配置文件即可
# 方式一: source /etc/profile # 方式二: . /etc/profile
使用pymysql 版本问题出现的报错信息 :
使用pymysql时, Django版本超过 2.0.7 的时候就会出现这种错误
# 修改前
query = query.decode(errors='replace')
# 修改后
query = query.encode(errors='replace')
修改后启动成功
PS: 如果不想使用
pymysql
,可以直接安装mysqlclient
pip install mysqlclient # mysqlclient 比较难装, 运气好一次可以装好, 是在不行不要强求