数据库权限
- 之前项目操作数据库,都是使用root用户,root用户权限太高了,在公司里,一般不会给你root用户权限
- 如果开发人员是root权限,数据安全性就很差
- 开发人员专门创建一个用户,用户只对当前项目的库有操作权限
- 创建一个luffy库,创建luffy用户,luffy用户只对luffy库有操作权限
创建luffy数据库
# 1.管理员连接数据库 >: mysql -uroot -proot # 2.创建数据库 >: create database luffy default charset=utf8; # 3.查看用户 >: select user,host,password from mysql.user;
只有root用户,要创建luffy用户
# 5.7往后的版本(提示: 5.7之后password字段变成了authentication_string字段) >: select user,host,authentication_string from mysql.user; """
创建用户,授予权限
设置权限账号密码 # 授权账号命令:grant 权限(create, update) on 库.表 to '账号'@'host' identified by '密码' 1.配置任意ip都可以连入数据库的账户 grant all privileges on luffy.* to 'user1'@'%' identified by 'Luffy123?'; # 创建一个用户user1,可以通过密码Luffy123?对luffy库的所有表进行访问 # %指允许远程访问 2.由于数据库版本的问题,加%之后可能本地还连接不上,给本地用户单独再配置一条 >: grant all privileges on luffy.* to 'user2'@'localhost' identified by 'Luffy123?'; 3.刷新一下权限 >: flush privileges; """ 只能操作luffy数据库的账户 账号:user1 密码:Luffy123? """
提问:mysql 的 localhost 连接与 IP 地址连接有什么区别?
项目连接数据库
配置文件配置
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'luffy', 'USER': 'user1', 'PASSWORD': 'Luffy123?', 'HOST': 'localhost', 'PORT': 3306 } } import pymysql pymysql.install_as_MySQLdb()
安装pymysql,或者是mysqlclient
# 运气好:一把装好就用mysqlclient pip3 install mysqlclient # 或者使用pymysql(django版本超过2.0.7,需要改源码) # 使用pymysql不要忘了在配置文件中加入 import pymysql pymysql.install_as_MySQLdb()
补充:Django 2.x 一些版本pymysql兼容问题
# 项目操作mysql,需要安装模块 -pymysql -mysqlDB -mysqlclient
历史:
- 原来py2上有个操作mysql的模块叫mysqlDB,但是不支持py3,django默认使用这个模块去连接mysql,mysqlDB不支持py3,运行会报错
- 我们使用pymysql,作为连接mysql的数据库模块,但是需要加代码
imprort pymysql pymysql.install_as_mysqldb() # 猴子补丁
- django 2.2.2以后,还使用pymysql,需要改djagno源代码
- 每次修改源码会很麻烦, 后期统一使用mysqlclient来作为操作mysql的底层库,它是基于py2的mysqldb,在py3上重写了,但是名字改成了mysqlclient
- 使用mysqlclient,只需要安装这个模块,不需要再写任何代码,直接用即可
问题:如果项目上线后代码泄露,数据库密码很容易泄露,安全性不高,所以,一般我们PASSWORD
密码不因该存放到pro.py
或者dev.py
配置文件中。 因此存放到服务器中, 通过环境变量的获取存放。
通过服务器环境变量来存放/获取密码
配置文件:
name = os.environ.get('MYSQL_NAME','Luffy12333')
password = os.environ.get('MYSQL_PASSWORD','Luffy12333')
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'luffy', 'USER': name, 'PASSWORD': password, 'HOST': 'localhost', 'PORT': 3306 } }
-
Windows配置完环境变量需要重启电脑,否则启动项目报错
-
Linux重新加载配置文件即可
# 方式一: source /etc/profile # 方式二: . /etc/profile
标签:创建,数据库,luffy,mysqlclient,pymysql,mysql,权限 From: https://www.cnblogs.com/chen-ao666/p/17162221.html