MongoDB进击 Linux单机安装
由于没有使用过MongoDB,不能掉队,第一步从安装开始
1.到mongodb官网下载对应系统的压缩包,。(注意不要选错系统版本,也可以在本地下载好后上传到云服务器)
2.默认下载路径是到用户目录下的Downloads目录,将其解压
链接:https://pan.baidu.com/s/11nKI-cDB62viwWKIEoNYDQ
提取码:xdf2
tar -zxvf mongodb-linux-x86_64-4.0.10.tgz
3.将解压后的文件夹移动到/usr/local/的mongodb目录下
mv -r mongodb-linux-x86_64-4.0.10 /usr/local/mongodb
4.配置系统文件profile
sudo vi /etc/profile
插入下列内容:
export MONGODB_HOME=/usr/local/mongodb export PATH=$PATH:$MONGODB_HOME/bin
注意保存后要重启系统配置:
source /etc/profile
5.创建用于存放数据和日志文件的文件夹,并修改其权限增加读写权限
cd /usr/local/mongodb sudo mkdir -p data/db
sudo chmod -r 777 data/db sudo mkdir logs cd logs touch mongodb.log
6.mongodb启动配置
进入到bin目录,增加(这个配置文件需要手动添加)一个配置文件:
cd /usr/local/mongodb/bin sudo vi mongodb.conf
插入下列内容:
dbpath = /usr/local/mongodb/data/db #数据文件存放目录 logpath = /usr/local/mongodb/logs/mongodb.log #日志文件存放目录 port = 27017 #端口 fork = true #以守护程序的方式启用,即在后台运行
bind_ip_all = true #外网可以连接
# nohttpinterface = true 这个配置需要去掉,不然会出现一个如下错误
# Error parsing INI config file: unrecognised option 'nohttpinterface'
7. 启动mongod数据库服务,以配置文件的方式启动
cd /usr/local/mongodb/bin ./mongod -f mongodb.conf
8.连接mongodb数据库
./mongo
9 .启动浏览器访问
10 可视化工具安装
https://blog.csdn.net/weixin_39999535/article/details/81383196
MongoDB常用命令
[root@snails ~]# ps -ef|grep mongod
[root@snails ~]# mongo --host=127.0.0.1 --port=27017
MongoDB shell version: 3.2.7
connecting to: 127.0.0.1:27017/test
> show dbs #显示数据库列表
> show collections #显示当前数据库中的集合(类似关系数据库中的表)
> show users #显示用户
> use <db name> #切换当前数据库,如果数据库不存在则创建数据库。
> db.help() #显示数据库操作命令,里面有很多的命令
> db.foo.help() #显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令
> db.foo.find() #对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据)
> db.foo.find( { a : 1 } ) #对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1
MongoDB没有创建数据库的命令,但有类似的命令。 如:如果你想创建一个“myTest”的数据库,先运行use
myTest命令,之后就做一些操作(如:db.createCollection(‘user’)),这样就可以创建一个名叫“myTest”的数据库。
其他命令
> db.dropDatabase() #删除当前使用数据库
> db.cloneDatabase("127.0.0.1") #将指定机器上的数据库的数据克隆到当前数据库
> db.copyDatabase("mydb", "temp", "127.0.0.1") #将本机的mydb的数据复制到temp数据库中
> db.repairDatabase() #修复当前数据库
> db.getName() #查看当前使用的数据库,也可以直接用db
> db.stats() #显示当前db状态
> db.version() #当前db版本
> db.getMongo() #查看当前db的链接机器地址
> db.serverStatus() #查看数据库服务器的状态
11 添加密码
编辑mongdb.conf 添加auth=true#开启认证登录
进入终端
尝试敲入以下命令:db; use admin; db.auth("admin", "admin")
>db test >use admin switched to db admin
当我们敲入db.auth("admin", "admin")时,返回为0,出现Error: Authentication failed。也正是这个原因导致robomongo无法连接
>db.auth("admin","admin")
Error: Authentication failed.
0
解决方法是手动添加admin账户,创建成功后,再次db.auth("admin", "admin"),返回1
>db.createUser( { user: "admin", pwd: "admin", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
>db.auth("admin","admin") 1
如果只是单纯的把玩建议吧角色设置为readWrite
1、数据库用户角色:read、readWrite;
2、数据库管理角色:dbAdmin、dbOwner、userAdmin;
3、集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4、备份恢复角色:backup、restore;
5、所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6、超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
7、内部角色:__system
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
https://cloud.tencent.com/developer/article/1433210
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
spring:
data:
mongodb:
uri: mongodb://******:27017/scc_logistics
@Data
@Document(collection = "scc_student")
public class Student{
//@Id
private String id;
private String username;
private String password;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat( pattern ="yyyy-MM-dd HH:mm:ss", timezone ="GMT+8")
private Date birthday;
}
@Autowired
private MongoTemplate mongoTemplate;
@RequestMapping(value = "/test")
public SimpleResponse distributeOrder() {
/*for (int i = 0; i <5 ; i++) {
Student student = new Student();
String id = IdUtil.objectId();
System.out.println("IdUtil_id:" + id);
student.setId(id);
student.setBirthday(new Date());
student.setPassword("987654" + i);
student.setUsername("fsadfas12" + i);
//加入
mongoTemplate.save(student);
}*/
/*Query query = new Query(Criteria
.where("username").is("test"));
List<Student> students = mongoTemplate.find(query, Student.class);
System.out.println("students" + JSON.toJSONString(students));*/
/*String regex = String.format("%s%s%s", "^.*", "test", ".*$");
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Query query1 = new Query(Criteria.where("username").regex(pattern));
List<Student> students1 = mongoTemplate.find(query1, Student.class);
*/
Date startDate = DateUtil.parse("2022-06-01 09:40:00", "yyyy-MM-dd HH:mm:ss");
Date endDate =DateUtil.parse("2022-06-01 09:45:00", "yyyy-MM-dd HH:mm:ss");
Criteria startTime = Criteria.where("birthday").gte(startDate);
Criteria endTime = Criteria.where("birthday").lte(endDate);
Criteria criteria = new Criteria().andOperator(startTime, endTime);
Query query = new Query(criteria);
List<Student> documentList = mongoTemplate.find(query, Student.class);
return new SimpleResponse(documentList);
}