windows本机安装
一、MongoDB下载(windows)
直接官网下载,不用注册登录,红框框选择系统和版本
安装图解
- 开始就下一步
- 然后碰到这一步,选择Custom,自定义
- 这里选择安装路径
- 这里一般不用动,现在选中的是本地用户服务,后面是域服务,底下的data是数据存储地址,log就不说了
- MongoDB Compass这个东西感兴趣可以去搜一下,我也就知道是个图形化工具(我还是比较喜欢navicat),我选择取消勾选
- 下面install安装一下就行了
还有一件事
别忘了将mongo路径加入环境变量!!!
这是我安装后的目录与文件
将这个路径复制到环境变量里
二、ubuntu中使用docker安装
一、安装docker
sudo apt-get install docker.io -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
不加就是这样。。。
删除容器
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
初始化正确会有这个,后面是初始密码
安装服务
mysqld -install
启动服务,进入数据库,更改密码
net start mysql
- 如果启动失败,看一下my.ini有没有配置错
- mysql -u root -p进行登录数据库,密码就是上面的临时密码
- 更改密码:ALTER USER root@localhost IDENTIFIED BY ‘123456’; 有可能报错的,因为新版mysql设置了密码长度,都可以在配置表里改的。有问题,找度娘,哈哈。
- 后面我复制上面的初始密码到navicat里连接了,然后会有弹窗让你改密码。
四、数据库语法练习:
ps:mongo还是上学的时候老师教的,现在忘了不少,下面的语法算是复习一下
这里说一下,数据库安装有时候是真的痛苦,所以我都搞docker里面了,而且docker也在虚拟机了
就用这两个练习一下吧(redis先放一放)
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,如果直接用命令的话
这里面,进到mongo容器里面,直接输入mongo就行了,show dbs是查看现在有几个数据库,前三个是系统创建的,最后一个test数据库是我自己创建的,
这里,db是查看现在是在那个数据库里面,show tables是查看这个数据库的所有集合
终端和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”})
- 文档查询,看一下下面这个查询,是不是看着有点烦(这还只是一行,数据还少)
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)
-
聚合函数