文章目录

  • windows本机安装
  • 一、MongoDB下载(windows)
  • 直接官网下载,不用注册登录,红框框选择系统和版本
  • 安装图解
  • 还有一件事
  • 二、ubuntu中使用docker安装
  • 一、安装docker
  • 查看安装版本
  • 二、下载镜像
  • 安装mysql
  • 一、下载镜像
  • 接下来直接通过镜像运行一个容器就行了
  • 部分命令
  • 常用设置
  • 安装mongo
  • 下载镜像
  • 通过镜像创建容器
  • 安装postgresql
  • 命令
  • 安装redis
  • 命令:会有中文乱码(找到解决办法了再补上)
  • 删除容器
  • 三、 本机安装
  • mysql
  • my.ini 文件
  • 初始化数据库 (数据库bin目录下,而且要管理员模式)
  • 初始化正确会有这个,后面是初始密码
  • 安装服务
  • 启动服务,进入数据库,更改密码
  • 四、数据库语法练习:
  • MongoDB语法
  • 聚合函数
  • 先挖坑,慢慢填



windows本机安装

一、MongoDB下载(windows)

直接官网下载,不用注册登录,红框框选择系统和版本

点击跳转

数据库做实时镜像 数据库镜像怎么安装_数据库

安装图解

  • 开始就下一步
  • 然后碰到这一步,选择Custom,自定义
  • 这里选择安装路径
  • 这里一般不用动,现在选中的是本地用户服务,后面是域服务,底下的data是数据存储地址,log就不说了
  • MongoDB Compass这个东西感兴趣可以去搜一下,我也就知道是个图形化工具(我还是比较喜欢navicat),我选择取消勾选
  • 下面install安装一下就行了

还有一件事

别忘了将mongo路径加入环境变量!!!

这是我安装后的目录与文件

数据库做实时镜像 数据库镜像怎么安装_mongodb_02

将这个路径复制到环境变量里

数据库做实时镜像 数据库镜像怎么安装_mongodb_03

二、ubuntu中使用docker安装

一、安装docker

sudo apt-get install  -y

查看安装版本

docker --version

二、下载镜像

安装mysql

一、下载镜像
sudo docker pull mysql
接下来直接通过镜像运行一个容器就行了
docker run --name mysqlserver -v /home/username/data/mydb/mysql : /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3306:3306 mysql:latest

ps:
–name:容器名
-v 挂载路径(本机/容器)
-e MYSQL_ROOT_PASSWORD 服务器密码
-p 容器端口映射到服务器端口
-d 后台运行

部分命令

运行容器

sudo docker-compose -f  [docker-compose.yml] up -d

docker-compose -f yml文件 up -d
-f : 指定使用的Compose模板文件
-d : 后台运行
停止容器

docker-compose -f docker-compose.yml down -d

docker容器映射

sudo docker run -d -p 9000:9000  --restart=always  -v /var/run/docker.sock:/var/run/docker.sock  --name portainer  portainer/portainer

-p 添加映射端口

-v 宿主机目录:容器目录
/var/run/docker.sock docker守护进程

-d 后台运行

–restart always时自动重启

–nemg 命名

portainer/portainer 镜像

常用设置
  • mysql 断开链接时间
  • show variables like '%timeout%'; 查看当前断开连接时间(默认8小时60608=28800)
  • 不知道那个起作用,都改了(临时修改)
  • set interactive_timeout=600;
  • set wait_timeout=600;
  • 修改mysql的配置文件(windows下就是my.ini文件)
  • /etc/my.cnf(或/etc/mysql/my.cnf)
interactive_timeout=1000  # 交互连接时间
wait_timeout=1000   # 等待超时
max_connections=800  # 最大连接数
  • 更改最大连接数量 (这个知道就行,别轻易玩)
  • show variables like'%max_connections%';查看当前最大连接数量
  • set global max_connections = 2000;更改最大数量 (global全局更改)

安装mongo

下载镜像
sudo docker pull mongo
通过镜像创建容器
sudo docker run -itd --name mongo -p 27017:27017 -v /home/chang/data/mydb/mongo:/data/db mongo --auth

不同点是 --auth 这个是说使用身份验证登陆(我不加,哈哈)

安装postgresql

命令
sudo docker run --name postgres1 -e POSTGRES_PASSWORD=123456 -p 5432:5432 -d postgres

安装redis

命令:会有中文乱码(找到解决办法了再补上)
sudo docker run -itd --name redis -p 6379:6379  -d redis -v /home/chang/data/mydb/redis:/data --raw

不加就是这样。。。

数据库做实时镜像 数据库镜像怎么安装_数据库做实时镜像_04

删除容器
sudo docker rm 容器id

三、 本机安装

mysql

  • 先下载MySQL安装包
  • mysql官网
  • 然后,就是配置环境变量
  • 重点

my.ini 文件

[mysqld]

# 设置3306端口

port=3306

# 设置mysql的安装目录

basedir=E:\app\mysql
# 设置mysql数据库的数据的存放目录

datadir=E:\app\mysql\data

# 允许最大连接数

max_connections=200

# 允许连接失败的次数。

max_connect_errors=10

# 服务端使用的字符集默认为UTF8

character-set-server=utf8

# 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

# 默认使用“mysql_native_password”插件认证

#mysql_native_password

default_authentication_plugin=mysql_native_password

default-time-zone='+08:00'
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysql]

# 设置mysql客户端默认字符集

default-character-set=utf8

[client]

# 设置mysql客户端连接服务端时默认使用的端口

port=3306
default-character-set=utf8

初始化数据库 (数据库bin目录下,而且要管理员模式)

mysqld --initialize --user=mysql --console
初始化正确会有这个,后面是初始密码

数据库做实时镜像 数据库镜像怎么安装_数据库_05

安装服务

mysqld -install

数据库做实时镜像 数据库镜像怎么安装_mongodb_06

启动服务,进入数据库,更改密码

  • net start mysql
  • 如果启动失败,看一下my.ini有没有配置错
  • mysql -u root -p进行登录数据库,密码就是上面的临时密码
  • 更改密码:ALTER USER root@localhost IDENTIFIED BY ‘123456’; 有可能报错的,因为新版mysql设置了密码长度,都可以在配置表里改的。有问题,找度娘,哈哈。
  • 后面我复制上面的初始密码到navicat里连接了,然后会有弹窗让你改密码。

四、数据库语法练习:

ps:mongo还是上学的时候老师教的,现在忘了不少,下面的语法算是复习一下

这里说一下,数据库安装有时候是真的痛苦,所以我都搞docker里面了,而且docker也在虚拟机了

就用这两个练习一下吧(redis先放一放)

数据库做实时镜像 数据库镜像怎么安装_mysql_07

MongoDB语法

  • 首先,添加用户,创建密码,这个是管理数据库用户用的
use admin

db.createUser( {user: "admin",pwd: "123456",roles: [ { role: "root", db: "admin" } ]})
  • 然后,就可以在需要的数据库添加用户了,就改一下role的值就行,但是要先进admin数据库,输入账号密码
use admin
db.auth("admin","123456")
db.createUser( {user: "test",pwd: "123456",roles: [ { role: "dbAdmin", db: "test" } ]})
  • 登录数据库(pymongo)
# mono mongodb://用户名:密码@主机地址:端口号
mongodb://admin:123456@localhost:27017
  • 登录数据库(终端)
mongo -u username -p pwd localhost:27017/admin(用户名对应的数据库)
  • 上面是直接用管理员账号登录,这个是使用数据库用户登录(只操作一个数据库)
mongo mongodb://test:123456@localhost:27017
  • 这里说一下,要验证的话,创建容器的时候 加上–auth,容器可以删除重新运行(数据没删)
  • 插入数据(以字典格式)
db.class.insert({id:1,name:'张三',age:'17'})

对了,里的calss是数据库中的一个集合,我是使用的navicat,如果直接用命令的话

数据库做实时镜像 数据库镜像怎么安装_数据库做实时镜像_08


这里面,进到mongo容器里面,直接输入mongo就行了,show dbs是查看现在有几个数据库,前三个是系统创建的,最后一个test数据库是我自己创建的,

数据库做实时镜像 数据库镜像怎么安装_mongodb_09


这里,db是查看现在是在那个数据库里面,show tables是查看这个数据库的所有集合

数据库做实时镜像 数据库镜像怎么安装_database_10


终端和navicat用着差不多。下面真的要说语法了

  • 创建数据库,这里,直接创建一个数据库,并不会直接显示,要向里面添加一个集合(数据),才会显示
  • 删除数据库
db.dropDatabase()   # 不添加图片了,太占地方了
  • 创建集合
db.createCollection("mymongo", { capped : true, autoIndexId : true, size : 
  6142800, max : 10000 } )

这里面的是字段参数,比如capped 是一个布尔值,如果是true的话,就是一个固定集合,必须要有size(最大值=字节数),max是文档最大个数,autoIndexId 表示是否创建索引,3.2之后默认创建,而且没有这个参数了

  • 删除集合
db.demo.drop()
  • 插入数据
db.demo.insert({"测试":“test”}) # 现在即使没有集合,插入数据也会自己创建一个集合
  • 删除数据
db.tab.remove({"测试":'test2'},1)   # 加上这个一是删除一条,不加是删除所有
  • 不过,现在有了新的写法
# 删除一条
db.inventory.deleteOne({"测试":“test2”})

# 删除多条
db.inventory.deleteMany({"测试":“tes2t”})

数据库做实时镜像 数据库镜像怎么安装_mongodb_11

- 文档查询,看一下下面这个查询,是不是看着有点烦(这还只是一行,数据还少)

数据库做实时镜像 数据库镜像怎么安装_database_12

db.tab.find().pretty()
  • 这样是不是看着轻松点
  • 这个是添加的数据
db.tab.insert({
id:1,
name:'王二',
age:19,
hobby:[
{"球类":["排球","篮球","足球"]},
{"钓鱼":["台钓","路亚"]}
]
})
  • 这就开始高级查询了,条件查询之大于、小于,等于…
  • (>) 大于 - $gt
  • (<) 小于 - $lt
  • (>=) 大于等于 - $gte
  • (<= ) 小于等于 - $lte
  • 查询age字段大于17的数据
db.class.find({"age":{$ge:17}}).pretty()
  • 查询指定的字段
  • 查询age字段小于18,并且只显示name字段
db.class.find({age:{$lt:18}},{name:1,_id:0}).pretty()
  • limit函数,根据函数传递参数,显示几条查询数据(下面就显示一条)
db.class.find({age:{$lt:18}},{name:1,_id:0}).pretty().limit(1)

聚合函数

先挖坑,慢慢填