二 、数据库(MySQL、MongoDB、Redis)的基本使用

二 、数据库(MySQL、MongoDB、Redis)的基本使用

1. 本系统后端架构(Flask+MySQL+MongoDB+Redis):
  • 为什么使用3种数据库?每个数据库的功能?
    • MySQL: 用来存储结构化数据,例如用户信息,新闻的特征
      • 需掌握的操作(增删改查、排序)
    • MongoDB:用于存储画像数据(包括用户画像和新闻画像)
      • 需掌握的操作(增删改查、排序)
    • Redis:内存数据库,用于存储变化的数据,用于存储变化快的数据,主要用于存储新闻动态变化的数据(用户对新闻的行为数据)、热门页列表数据、推荐页列表数据、用户曝光表、新闻详情信息
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语句
  • 未完,待续。。。
参考资料

DataWhale开源资料

你可能感兴趣的:(从零搭建新闻推荐系统,mysql,数据库,mongodb,redis)