二 、数据库(MySQL、MongoDB、Redis)的基本使用
1. 本系统后端架构(Flask+MySQL+MongoDB+Redis):
- 为什么使用3种数据库?每个数据库的功能?
- MySQL: 用来存储结构化数据,例如用户信息,新闻的特征
- 需掌握的操作(增删改查、排序)
- MongoDB:用于存储画像数据(包括用户画像和新闻画像)
- 需掌握的操作(增删改查、排序)
- Redis:内存数据库,用于存储变化的数据,用于存储变化快的数据,主要用于存储新闻动态变化的数据(用户对新闻的行为数据)、热门页列表数据、推荐页列表数据、用户曝光表、新闻详情信息
- MySQL: 用来存储结构化数据,例如用户信息,新闻的特征
2. 三种数据库的使用
-
MySQL的使用:
-
ubuntu安装MySQL:
sudo apt install mysql-server mysql-client
-
第一步先配好环境
-
验证MySQL服务正在运行:
sudo service mysql status
-
配置MySQL安全性:
sudo mysql_secure_installation
-
以root用户登录:
mysql -uroot -p
-
以上命令可能会被拒绝,若要以 root 用户身份登录 MySQL服务器,输入:
sudo mysql
-
退出MySQL:
mysql> exit
-
如果想以root 身份登录 MySQL 服务器,便于使用其他的程序。可以将验证方法从
auth_socket
修改成`mysql_native_password:-
方式1:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; mysql> FLUSH PRIVILEGES; -- 现在便可以通过mysql -uroot -p登录 -- 再次修改回`sudo mysql`的方式来登录`root`用户 mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket BY '你的密码'; mysql> FLUSH PRIVILEGES;
-
不过这里有个问题,root对应的hostname为“%”而不是“localhost”:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'mysql123'; create user 'root'@'%' identified WITH mysql_native_password by 'mysql123'; grant all privileges on *.* to root@'%' with grant option; -- WITH mysql_native_password是我自己加的,否则navicat连不上。
-
-
方式2(推荐):
-- 创建一个新的独立管理用户,拥有所有数据库的访问权限 # 创建用户 CREATE USER '用户名'@'localhost' identified by '你的密码' # 赋予admin用户全部的权限,你也可以只授予部分权限 GRANT ALL PRIVILEGES ON *.* TO '用户名'@'localhost';
-
-
修改密码:
-- 将用户`admin`的登录密码修改为`mysql321` mysql> ALTER USER 'admin'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysql321';
-
撤销用户授权:
# 查看用户的权限 show grants for 'admin'@'localhost'; # 撤销用户的权限 # 用户有什么权限就撤销什么 revoke all privileges on *.* from 'admin'@'localhost';
-
删除用户:
drop user 'admin'@'localhost';
-
-
MongoDB:
-
特点:
- 一个基于分布式文件存储的开源数据库系统
- 在高负载的情况下,添加更多的节点,可以保证服务器性能。
- MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
- MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。
-
安装(Linux):
sudo apt-get install libcurl4 openssl
-
查看Linux版本:
lsb_release -a
-
去官网下载安装包,选择 tgz 下载,并解压 tgz:
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-4.4.10.tgz #下载 tar -zxvf mongodb-linux-x86_64-ubuntu1604-4.4.10.tgz #解压
-
MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:
export PATH=<mongodb-install-directory>/bin:$PATH
-
创建数据库目录:
-
默认情况下 MongoDB 启动后会初始化以下两个目录:
- 数据存储目录:/var/lib/mongodb
- 日志文件目录:/var/log/mongodb
-
我们在启动前可以先创建这两个目录:
sudo mkdir -p /var/lib/mongo sudo mkdir -p /var/log/mongodb
-
-
启动 Mongodb 服务:
1. sudo su 2. mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork
-
MongoDB后台管理:
- 由于已经将MongoDB可执行文件添加到PATH路径,所以可以直接执行 mongo 命令文件
- MongoDB Shell 是 MongoDB 自带的交互式 Javascript shell,用来对 MongoDB 进行操作和管理的交互式环境
- 进入 mongoDB 后台后,它默认会链接到 test 文档(数据库)
-
-
Redis(Remote Dictionary Server ):
-
远程字典服务
-
支持网络、可基于内存亦可持久化的日志型、Key-Value数据库
-
读写非常高速,可达10w/s的评率,所以一般应用于数据变化快、实时通讯、缓存等
-
Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载到内存使用。
-
Redis 不仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。
-
Redis 支持主从复制,即 master-slave 模式的数据备份。
-
安装:
sudo apt-get install redis-server
-
启动(一般安装完会自动启动,开机也是默认自启动):
redis-server [--daemonize yes][--port 6379] -- 检查是否启动成功 service redis-server status
-
检查当前进程,查看redis是否启动:
ps -aux|grep redis-server
-
进入redis客户端,与服务器进行通信:
redis-cli
-
连接Redis:
redis-cli [-h host -p port -a password]
-
停止Redis(两种方法)
redis-cli shutdown kill redis-pid
-
3. SQL语句
- 未完,待续。。。