-
【功能模块】KylinOS | Kylin Linux Advanced Server (Kunpeng) V10 服务器鲲鹏系列 系统是麒麟V10 求一个完整编译安装 mongodb 4.0.12 的文档 谢谢【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
迁移环境虚拟机服务器 KVM Virtual Machine 虚拟机配置:aarch64架构 、 32G内存 、 16核 、300G磁盘空间 虚拟机操作系统: Linux version 4.19.90-2009.3.0.0045.up1.uel20.aarch64 (abuild@armbuild-02) (gcc version 7.3.0 (GCC)) #1 SMP Sun Oct 11 16:12:59 UTC 2020 软件版本:mongodb-4.4.1 版本获取方式https://github.com/mongodb/mongo/archive/r4.4.1.tar.gz 参考编译指南和问题https://support.huaweicloud.com/prtg-kunpengdbs/kunpengdbs_02_0004.html mongodb4.4.1的版本依赖gcc 8.2以上, Python 3.7.x、编译相关依赖:CMake 通过yum install cmake 安装Cython、pyyaml、typing、cheetah3 通过 python3 setup.py install 方式安装 gcc升级到8.2wget http://ftp.gnu.org/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.gztar -C /usr/local -xzf gcc-8.2.0.tar.gzcd /usr/local/gcc-8.2.0./contrib/download_prerequisites mkdir build cd build ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilibyum groupinstall "Development Tools" make -j16#这个步骤非常耗时长make install 修改 /etc/profile 添加如下命令:export PATH=/usr/local/bin:$PATH使配置生效source /etc/profile gcc -v 查看版本号就变成8.2了 如果需要完全替代本地的gcc进行如下操作,(以下操作不影响编译):{find / -name "libstdc++.so*"输出如下(最新动态库的目录)/usr/local/gcc-8.2.0/build/stage1-aarch64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.25/usr/local/gcc-8.2.0/build/stage1-aarch64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6/usr/local/gcc-8.2.0/build/ /usr/local/gcc-8.2.0/build/stage1-aarch64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so复制最新动态库文件libstdc++.so.6.0.25到/usr/lib64下cp /usr/local/gcc-8.2.0/build/ stage1-aarch64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.25 /usr/lib64复制后,修改系统默认动态库的指向,即:重建默认库的软连接。切换工作目录至/usr/lib64:cd /usr/lib64删除原来软连接rm -rf libstdc++.so.6将默认库的软连接指向最新动态库:ln -s libstdc++.so.6.0.25 libstdc++.so.6默认动态库升级完成。重新运行以下命令检查动态库:strings /usr/lib64/libstdc++.so.6 | grep GLIBCgcc -v 查看版本号就变成8.2了 }编译报错Do not know how to make File target ‘all’按照迁移文档中的编译命令会出现如下错误: 原因是r4.4.1版本中scans已经没有定义all标签了,以下是编译mongod模块命令:python3 buildscripts/scons.py install-mongod MONGO_VERSION=4.4.1 CFLAGS="-march=armv8-a+crc -mtune=generic" -j 16 --disable-warnings-as-errors 编译完成后可以在: /build/install 查看到已编译完成的文件,如果编译和安装一起,命令参考安装问题中的安装命令。 如果需要编译其他模块,install-mongod可修改成如下: install-mongodinstall-mongosinstall-mongoor install-shellinstall-servers(includes mongod and mongos)install-core(includes mongod, mongos, mongo)install-allinstall-all-meta (includes mongod, mongo, unit tests, etc)其中如果编译(mongod, mongos, and mongo)中的一个模块的话推荐20G以上的磁盘空间,如果编译install-all-meta 推荐300G以上 ,如果install-all推荐600G以上的磁盘空间。 No module named ‘psutil’ 安装如下依赖:yum install python3-develpip3 install psutil ssl依赖不存在 安装如下依赖:yum install openssl-devel 安装问题按照迁移文档中的安装命令会出现如下错误: 原因是r4.4.1版本中scans已经没有定义install标签了,以下是安装mongod模块命令: python3 buildscripts/scons.py MONGO_VERSION=4.4.1 DESTDIR=/ PREFIX=/usr/local/mongo --disable-warnings-as-errors CFLAGS="-march=armv8-a+crc" install-mongod -j 16 表示安装到/usr/local/mongo目录下。其他模块修改install-mongod即可。
-
环境准备创建工程,并添加以下依赖:<dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver</artifactId> <version>3.10.1</version> </dependency>2 使用mongodb-driver2.1 查询所有@Test public void test1() { //创建连接 MongoClient client = new MongoClient("192.168.200.128"); //打开数据库 MongoDatabase commentdb = client.getDatabase("commentdb"); //获取集合 MongoCollection<Document> comment = commentdb.getCollection("comment"); //查询 FindIterable<Document> documents = comment.find(); //查询记录获取文档集合 for (Document document : documents) { System.out.println("_id:" + document.get("_id")); System.out.println("内容:" + document.get("content")); System.out.println("用户ID:" + document.get("userid")); System.out.println("点赞数:" + document.get("thumbup")); } //关闭连接 client.close(); } } 2.2 根据_id查询每次使用都要用到MongoCollection,进行抽取:private MongoClient client; private MongoCollection<Document> comment; @Before public void init() { //创建连接 client = new MongoClient("192.168.200.128"); //打开数据库 MongoDatabase commentdb = client.getDatabase("commentdb"); //获取集合 comment = commentdb.getCollection("comment"); } @After public void after() { client.close(); } @Test public void test2() { //查询 FindIterable<Document> documents = comment.find(new BasicDBObject("_id", "1")); //查询记录获取文档集合 for (Document document : documents) { System.out.println("_id:" + document.get("_id")); System.out.println("内容:" + document.get("content")); System.out.println("用户ID:" + document.get("userid")); System.out.println("点赞数:" + document.get("thumbup")); } }2.3 新增@Test public void test3() { Map<String, Object> map = new HashMap(); map.put("_id", "6"); map.put("content", "很棒!"); map.put("userid", "9999"); map.put("thumbup", 123); Document document = new Document(map); comment.insertOne(document); }@Test public void test3() { Map<String, Object> map = new HashMap(); map.put("_id", "6"); map.put("content", "很棒!"); map.put("userid", "9999"); map.put("thumbup", 123); Document document = new Document(map); comment.insertOne(document); }2.4 修改@Test public void test4() { //修改的条件 Bson filter = new BasicDBObject("_id", "6"); //修改的数据 Bson update = new BasicDBObject("$set", new Document("userid", "8888")); comment.updateOne(filter, update); }2.5 删除@Test public void test5() { //删除的条件 Bson filter = new BasicDBObject("_id", "6"); comment.deleteOne(filter); }优势:1、在适量级的内存的MongoDB的性能是非常迅速的,它将热数据存储在物理内存中,使得热数据的读写变得十分快。2、MongoDB的高可用和集群架构拥有十分高的扩展性。3、在副本集中,当主库遇到问题,无法继续提供服务的时候,副本集将选举一个新的主库继续提供服务。4、MongoDB的Bson和JSon格式的数据十分适合文档格式的存储与查询。劣势:1、 不支持事务操作。MongoDB本身没有自带事务机制,若需要在MongoDB中实现事务机制,需通过一个额外的表,从逻辑上自行实现事务。2、 应用经验少,由于NoSQL兴起时间短,应用经验相比关系型数据库较少。3、MongoDB占用空间过大。
-
1. 封装MongoDB类<?php class MongoDB { private $database; private $mongo; function __construct() { $this->mongo = new MongoClient("mongodb://user:password@server_address:port/admin"); $this->database = $this->mongo->selectDB("data"); } { return $this->database->selectCollection($collection); } //获取所有的集合名 function getCollections() { return $this->database->getCollectionNames(); } //选数据库 function selectDB($db) { $this->database = $this->mongo->selectDB($db); } } 2. 简单调用,insert数据。class DemoController extends CI_Controller { function __construct() { parent::__construct(); //CI中加载类 $this->load->library('mongo_lib', '', 'mongodb'); } //插入一条数据 function create() { $data = array('name'=>'mike','email'=>'abc@163.com); //选择库,shell:user demo_db $this->mongodb->selectDB('demo_db'); //选择集合,db.demo_col.insert(); $rebateCollection = $this->mongodb->getCollection('demo_collection'); $res = $rebateCollection->insert($data); } }
-
replication set复制集,复制集,多台服务器维护相同的数据副本,提高服务器的可用性。MongoDB复制是将数据同步在多个服务器的过程。复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。复制还允许您从硬件故障和服务中断中恢复数据。设置过程:(1)创建示例假设创建三台,创建三个实例目录和日志目录:mkdir /home/m17 /home/m18 /home/m19 /home/mlog启动三个示例,端口分别为27017、27018、27019。./mongod --dbpath=/home/m17 --logpath=/home/mlog/m17.log --fork --port=27017 --replSet=rs2 --smallfiles ./mongod --dbpath=/home/m18 --logpath=/home/mlog/m18.log --fork --port=27018 --replSet=rs2 --smallfiles ./mongod --dbpath=/home/m19 --logpath=/home/mlog/m19.log --fork --port=27019 --replSet=rs2 --smallfiles 说明:参数--replSet设置一样,才能属于同一个复制集参数--smallfiles可以节省空间,提高速度。然后使用ps aux | grep mongo可以查看到启动起来的三个端口。(2)配置使用客户端连接mongo进行配置:[test@localhost bin]$ ./mongo要管理配置,所以切换到admin上:>use admin(配置是json格式)var rsconf = { _id:'rs2', members:[ {"_id":0,host:'192.168.8.172:27017'}, {_id:1,host:'192.168.8.172:27018'}, {_id:2,host:'192.168.8.172:27019'} ] }如果没有配置ip,使用127.0.0.1var rsconf = { _id:'rs2', members:[ {_id:0,host:'127.0.0.1:27017'}, {_id:1,host:'127.0.0.1:27018'}, {_id:2,host:'127.0.0.1:27019'} ] } 执行后,使用 printjson(rsconf)查看刚才的配置。然后执行初始化:>rs.initiate(rsconf); > rs.initiate(rsconf); { "ok" : 1, "operationTime" : Timestamp(1539933041, 1), "$clusterTime" : { "clusterTime" : Timestamp(1539933041, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } } rs2:SECONDARY> 查看节点:rs.status()删除节点:rs.remove('127.0.0.1:27019')添加节点:rs.add('127.0.0.1:27019')切换节点:默认是在27017端口,即rs2:PRIMARY>状态,退出mongo客户端命令模式,切换到另一个端口:[test@localhost bin]$ ./mongo --port=27018,
-
replication set复制集,复制集,多台服务器维护相同的数据副本,提高服务器的可用性。MongoDB复制是将数据同步在多个服务器的过程。复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。复制还允许您从硬件故障和服务中断中恢复数据。设置过程:(1)创建示例假设创建三台,创建三个实例目录和日志目录:mkdir /home/m17 /home/m18 /home/m19 /home/mlog启动三个示例,端口分别为27017、27018、27019。./mongod --dbpath=/home/m17 --logpath=/home/mlog/m17.log --fork --port=27017 --replSet=rs2 --smallfiles ./mongod --dbpath=/home/m18 --logpath=/home/mlog/m18.log --fork --port=27018 --replSet=rs2 --smallfiles ./mongod --dbpath=/home/m19 --logpath=/home/mlog/m19.log --fork --port=27019 --replSet=rs2 --smallfiles 说明:参数--replSet设置一样,才能属于同一个复制集参数--smallfiles可以节省空间,提高速度。然后使用ps aux | grep mongo可以查看到启动起来的三个端口。(2)配置使用客户端连接mongo进行配置:[test@localhost bin]$ ./mongo 要管理配置,所以切换到admin上:>use admin(配置是json格式)var rsconf = { _id:'rs2', members:[ {"_id":0,host:'192.168.8.172:27017'}, {_id:1,host:'192.168.8.172:27018'}, {_id:2,host:'192.168.8.172:27019'} ] } 如果没有配置ip,使用127.0.0.1var rsconf = { _id:'rs2', members:[ {_id:0,host:'127.0.0.1:27017'}, {_id:1,host:'127.0.0.1:27018'}, {_id:2,host:'127.0.0.1:27019'} ] } 执行后,使用 printjson(rsconf)查看刚才的配置。然后执行初始化:>rs.initiate(rsconf); > rs.initiate(rsconf); { "ok" : 1, "operationTime" : Timestamp(1539933041, 1), "$clusterTime" : { "clusterTime" : Timestamp(1539933041, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } } rs2:SECONDARY> 查看节点:rs.status()删除节点:rs.remove('127.0.0.1:27019')添加节点:rs.add('127.0.0.1:27019')切换节点:默认是在27017端口,即rs2:PRIMARY>状态,退出mongo客户端命令模式,切换到另一个端口:[test@localhost bin]$ ./mongo --port=27018,
-
摘要: 作为开发,nosql我们用的越来越多,代表性的是mongodb,速度快性能好,还能完美的创建二维索引.这里我们梳理一下ubuntu上安装mongodb创建账号和库及添加坐标索引一 安装 1.1 安装php-mongodbsudo apt-get install php-mongodb 1.2 安装mongodb-orgsudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6 如果是ubuntu16或者18则echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list接下来sudo apt-get update sudo apt-get install -y mongodb-org sudo service mongod start # 启动二 常见启动等命令sudo service mongod start # 启动 sudo service mongod stop # 关闭 ps aux | grep mongod # 查看进程三 创建表,角色与权限 3.1 管理员账号mongo --host 127.0.0.1 use admin db.createUser( ... { ... user: "test", ... pwd: "test@1111", ... roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ] ... } ... ) db.getUser('test') exit3.2 对象库管理员账号及权限mongo --host 127.0.0.1 -u 'test' --authenticationDatabase 'admin' -p 'test@1111' use admin db.auth('test','test@1111') use lbs db.createUser( ... { ... user: "testlbs", ... pwd: "testlbs1111", ... roles: [ { role: "readWrite", db: "lbs" }, ... { role: "read", db: "lbs" } ] ... } ... ) exit3.3 对象库索引mongo --host 127.0.0.1 -u 'testlbs' --authenticationDatabase 'lbs' -p 'testlbs1111' db use lbs db db.createCollection('lbs',{capped:false}) db.lbs.createIndex({'location':'2dsphere'}) db.lbs.createIndex({'uniqid':1},{unique:true})四 卸载 4.1 关闭守护进程mongodsudo service mongod stop4.2 卸载安装的软件包sudo apt-get purge mongodb-org* 4.3 移除数据库和日志文件(数据库和日志文件的路径取决于/etc/mongod.conf文件中的配置)sudo rm -r /var/log/mongodb sudo rm -r /var/lib/mongodb
-
mongoDB是一种使用起来最像关系型数据库的非关系数据库。mongoDB库下面是集合,而关系型数据库的库下面是表。1.查看mongoDB软件下有哪些库:show dbs;(命令不会显示空的数据库)2.查看用户当前连接的是哪个数据库:db;3.创建一个新的数据库:use 数据库名(如果数据库已经存在,则切换到某一数据库下;如果此数据库不存在,则创建此数据库。)4.删除数据库:db.dropDatabase();5.查看某一个数据库下面的所有集合:show tables;从上面的命令看,确实很像关系型数据库。
-
1 切换数据库use admin;2 查看当前数据库db;2.1 查看所有数据库show collections;3 查看当前数据库下面的表show collections;4 删除数据库use test; db.dropDatabase(); #删除当前数据库 show dbs; #验证删除结果5 删除集合或者表db.table_name.drop(); #删除表 table_name6 查看账号信息mongo --port=23000 use admin; db.auth('username','password') db.system.users.find().pretty() #查看所有账号信息 show users; #查看当前账号信息 db.getUser('username') #查看指定用户的信息 7 使用gzip压缩的方式备份与恢复,注意只要换个命令就行,后面的不变,这里没用设置用户名和密码mongodump --port=23000 --archive=/data/mongo_backup/testdb-2.20191203.gz --db testdb-2 --gzip mongorestore --port=23000 --archive=/data/mongo_backup/testdb-2.20191203.gz --db testdb-2 --gzip ** 这种备份方式生成一个gzip文件,解压后也是一个文件,将所有内容都放到一个文件里面 8 不压缩的方式备份mongodump --port=23000 --db=testdb-2 -o /data/mongo_backup/20191203 mongorestore --port=23000 --db=testdb-2 --drop /data/mongo_backup/20191203/testdb-2 **经过这种方式备份,每个表通常就两个文件:.bson和.metadata.json 9 在shell中使用mongo命令查询# 使用eval mongo ip:port/database --eval "" [root@localhost ~]# mongo localhost:23000/testdb-2 --eval "printjson(db.table1.findOne())" MongoDB shell version v3.6.13 connecting to: mongodb://localhost:23000/testdb-2?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("e87ef5ae-a6b7-47d6-a91c-65f3a0b81ac0") } MongoDB server version: 3.6.13 { "_id" : ObjectId("5de60a767321940034390f16"), "id" : 129, "name" : "hehe" } #使用--quiet 去掉不必要的信息 [root@localhost ~]# mongo localhost:23000/testdb-2 --quiet --eval "printjson(db.table2.findOne())" { "_id" : ObjectId("5de615b8eac07a724c6911b6"), "id" : 6, "name" : "hehe" } #删除表 [root@localhost ~]# mongo localhost:23000/testdb-2 --eval "db.table1.drop();" MongoDB shell version v3.6.13 connecting to: mongodb://localhost:23000/testdb-2?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("0cf5b11f-c6ef-417c-8bbd-a2f8414f589c") } MongoDB server version: 3.6.13 true 10 shell脚本中使用mongo命令#!/bin/bash mongo localhost:23000/testdb-2 <<EOF var cursor=db.table2.find(); while (cursor.hasNext()){ var item = cursor.next(); print(item.name); } EOF #传参的方式 #!/bin/bash table_name=$1 mongo localhost:23000/testdb-2 <<EOF var cursor=db.${table_name}.find(); while (cursor.hasNext()){ var item = cursor.next(); print(item.name); } EOF
-
Mongo的优势1. 它会把数据文件映射到内存中,如果是读操作,内存中的数据起到缓存的作用,如果是写操作,内存还可以把随机的写操作转换成顺序的写操作,总之可以大幅度提升性能。MongoDB并不干涉内存管理工作,而是把这些工作留给操作系统的虚拟内存管理器去处理,这样做的好处是简化了MongoDB的工作,但坏处是你没有方法很方便的控制MongoDB占多大内存,幸运的是虚拟内存管理器的存在让我们多数时候并不需要关心这个问题。2. MongoDB的内存使用机制让它在缓存重建方面更有优势,简而言之:如果重启进程,那么缓存依然有效配置:spring.data.mongodb.uri=mongodb://test:123456@${ipAddr}:27017/mrqc?connectTimeoutMS=10000&authSource=admin版本:<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>2.2.0.RELEASE</version> </dependency>错误实体类MongoId设置为了String,需要设置为ObjectId类型@Data @Document("user") public class User { @MongoId private String id; @Field("userName") private String userName; }正确实体类@Data @Document("user") public class User { @MongoId private ObjectId id; @Field("userName") private String userName; }查询语句,如果mongoId类型为String那么就查询不出来,无论是直接使用findById方法或者find(query)或者id传ObjectId对象,都是查不出来的,开始还以为配置错了,结果是因为Mongo的id都是ObjectId无法对应上实体类中的String类型。改成ObjectId同样的语句就可以查询出来了User user = mongoTemplate.findById(new ObjectId(userId),User.class, "user");
-
在我们第一次启动MongoDB的时候,仅仅是制定了data数据目录和log日志目录,并没有指定--auth选项,也就是并不需要认证。[root@VM-0-14-centos mongo_27017]# mongo MongoDB shell version v4.0.6 connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("61c35b47-f43b-48fc-a43e-066f56987e9a") } MongoDB server version: 4.0.6 > db test > show dbs; admin 0.000GB config 0.000GB local 0.000GB > use admin switched to db admin > show users; > db.system.user.find()我们第一次登录MongoDB的服务,输入db,发现当前数据库是test,但是show dbs却看不到test数据库,其实这个是MongoDB的一个特点,test是一个虚的数据库,想要看到test中的内容,你只需要给test数据库中插入一个文档即可。 接着,我们可以看到,当我们输入show users的时候,没有看到任何账号信息。接下来我们准备开启--auth参数来重启MongoDB服务,在重启之前,我们需要保证已经分配了新的账号,下面我们开始分配账号:> db.createUser({ user: "root", pwd: "123456", roles: [ { role: "root", db: "admin"} ]}) Successfully added user: { "user" : "root", "roles" : [ { "role" : "root", "db" : "admin" } ] }这里,我们可以看到,我们分配了一个账号:user:root # 用户名pwd:123456 # 密码roles:root # 角色db:admin # 数据库角色root有必要做一下解释:Read: 允许用户读取指定数据库, readWrite:允许用户读写指定数据库 dbAdmin: 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile userAdmin:允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户 clusterAdmin: 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 readAnyDatabase: 只在admin数据库中可用,赋予用户所有数据库的读权限 readWriteAnyDatabase: 只在admin数据库中可用,赋予用户所有数据库的读写权限 userAdminAnyDatabase: 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 dbAdminAnyDatabase: 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 root: 只在admin数据库中可用。超级账号,超级权限创建好用户之后,我们重启MongoDB服务,在配置文件中打开--auth参数,或者直接在命令行里面指定auth参数,重新登陆:[root@VM-0-14-centos mongo_27017]# mongo MongoDB shell version v4.0.6 connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("5f2b0fa6-a1e3-4aaf-b43f-3525e19c33d2") } MongoDB server version: 4.0.6 > > use admin switched to db admin > show users 2020-10-28T23:42:06.127+0800 E QUERY [js] Error: command usersInfo requires authentication : _getErrorWithCode@src/mongo/shell/utils.js:25:13 DB.prototype.getUsers@src/mongo/shell/db.js:1763:1 shellHelper.show@src/mongo/shell/utils.js:859:9 shellHelper@src/mongo/shell/utils.js:766:15 @(shellhelp2):1:1 > db.auth("root","123456") 1 > show users { "_id" : "admin.root", "user" : "root", "db" : "admin", "roles" : [ { "role" : "root", "db" : "admin" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] }可以看到,当我们第一次使用show users的命令查看用户的时候,系统拒绝了我们,显示:Error: command usersInfo requires authentication然后我们进行权限校验:use admindb.auth("root","123456")这下可以了。不知道大家有没有留意到一个细节,我们登陆的时候,使用mongo命令登陆的,然后进行用户认证,有没有一种方法可以直接在登陆的时候就进行用户认证呢?答案是有的。登陆方法一:mongouse admindb.auth("user":"password")
-
centos7.6 for arm 编译安装mongodb4.0.12时出现下面错误Compiling build/opt/mongo/db/auth/sasl_scram_test.oCompiling build/opt/mongo/db/auth/sasl_authentication_session_test.oLinking build/opt/mongo/db/query/command_request_response_testCompiling build/opt/mongo/transport/transport_layer_egress_init.oCompiling build/opt/mongo/client/mongo_uri_test.oGenerating library build/opt/mongo/transport/libtransport_layer_egress_init.aSkipping ranlib for thin archive build/opt/mongo/transport/libtransport_layer_egress_init.aCompiling build/opt/mongo/db/repl/oplog_buffer_collection_test.oCompiling build/opt/mongo/db/query/query_planner_geo_test.oLinking build/opt/mongo/client/mongo_uri_testLinking build/opt/mongo/db/auth/sasl_scram_testCompiling build/opt/mongo/db/query/query_planner_collation_test.ocollect2: error: ld returned 1 exit statusscons: *** [build/opt/mongo/db/auth/sasl_scram_test] Error 1scons: building terminated because of errors.build/opt/mongo/db/auth/sasl_scram_test failed: Error 1目前不知道是哪里的问题,求帮助
-
mongodb挺好用的,存json数据方便。但默认安装后是不需要认证就可以直接连接,有点危险,下面就来配置mongodb的访问控制。系统环境: OS:centos7.6其他信息: mongodb server服务端下载地址:https://www.mongodb.com/try/download/community mongodb shell客户端下载地址:https://www.mongodb.com/try/download/shell安装过程我就不写出来了,下载好rpm包到服务器直接用rpm 命令安装就行。1.启动mongodb服务systemctl restart mongod2.添加管理员账号#启动mongodb客户端 mongosh #进入admin数据库 use admin #创建用户,user:用户名,pwd:密码,roles:角色 db.createUser({user: 'root', pwd: passwordPrompt(), roles: ['root']})3.关闭mongodb服务systemctl stop mongod4.设置开启访问控制启动#编辑mongodb服务 vi /usr/lib/systemd/system/mongod.service5.登录时验证#启动mongodb客户端 mongosh #进入admin数据库 use admin #进行身份验证,执行完后会提示输入密码 db.auth("root", passwordPrompt())如果需要在python使用带身份验证的mongodb,from pymongo import MongoClient # user:用户名,pwd:密码,server:服务器地址,port:服务端口,database:要连接的数据库 client = MongoClient('mongodb://user:pwd@server:port/database?authSource=admin')如果要修改密码请用这个命令db.changeUserPassword("user123", passwordPrompt())
-
这次以MongoDB 4.0.12为例演示如何在OpenEuler 20.03(LTS)编译安装。由于MongoDB 4.0.12安装需要不能少于50G磁盘剩余空间,请首先确认是否满足此条件。另外还需要执行以下基础组件安装:yum -y install libyaml libyaml-devel python-setuptools libcurl-devel python-devel gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel libpcap-dev*。如果上面安装过程无法识别,请参考“配置OpenEuler的网络yum源”,链接如下:https://bbs.huaweicloud.com/forum/thread-98091-1-1.html下面开始演示:1、 前置环境准备:cmake>=3.5.2;gcc>=7.3,对于openEuler20.03来说默认都是满足的。如下图所示:Cmake版本信息Gcc版本信息2、 安装MongoDB还需要依赖python和python相关模块,默认python2.7应该是默认已经安装成功的,如下图所示其他python组件信息如下表所示:软件名称及版本链接地址pyyamlhttps://github.com/yaml/pyyaml.gittypinghttps://github.com/python/typing.gitcheetah3https://github.com/CheetahTemplate3/cheetah3.gitA) 安装pyyaml下载pyyaml:git clone https://github.com/yaml/pyyaml.git进入pyyaml目录进项安装组件:B) 安装typing下载typing:git clone https://github.com/python/typing.git进入typing并开始安装:python setup.py installC) 安装cheetah3下载cheetah3:git clone https://github.com/CheetahTemplate3/cheetah3.git进入cheetah3安装 3、 MongoDB源码安装A) 下载MongoDB源码:wget https://github.com/mongodb/mongo/archive/r4.0.12.tar.gz【注意】下载速度可能有些慢,可以先通过下载工具完成下载,然后上传到服务器上B) 解压并安装:tar xzvf mongo-4.0.12.tar.gz,解压完成计入文件夹cd mongo-4.0.12C) 编译MongoDB源码:python2 buildscripts/scons.py MONGO_VERSION=4.0.12 all CFLAGS="-march=armv8-a+crc -mtune=generic" –j8 --disable-warnings-as-errors【注意】由于ECS的机器配置不能,编译的时间也是不定的D) 执行安装:python2 buildscripts/scons.py MONGO_VERSION=4.0.12 --prefix=/usr/local/mongo --disable-warnings-as-errors CFLAGS="-march=armv8-a+crc" install -j8E) 查看结果,通过上面截图可以看出安装目录位于:/usr/local/mongo/bin/目录中4、 验证:简单实用MongoDB,验证MongoDB是否可用A) 准备必要的文件和文件夹:B) 启动MongoDB服务端:C) 客户端登录:添加用户:添加数据并查询
-
【功能模块】【操作步骤&问题现象】1、安装mongoDB,中途更新python导致yum命令无法执行,显示python不兼容。2、依照网上的提示:更改 #!/usr/bin/python => #!/usr/local/bin/python2.73、但是还是报同样的错误【截图信息】There was a problem importing one of the Python modules required to run yum. The error leading to this problem was:No module named yumPlease install a package which provides this module, or verify that the module is installed correctly.It’s possible that the above module doesn’t match the current version of Python, which is:If you cannot solve this problem yourself, please go to the yum faq at:【日志信息】(可选,上传日志内容或者附件)
上滑加载中
推荐直播
-
探秘仓颉编程语言:华为开发者空间的创新利器
2025/02/22 周六 15:00-16:30
华为云讲师团
本期直播将与您一起探秘颉编程语言上线华为开发者空间后,显著提升开发效率,在智能化开发支持、全场景跨平台适配能力、工具链与生态完备性、语言简洁与高性能特性等方面展现出的独特优势。直播看点: 1.java转仓颉的小工具 2.仓颉动画三方库lottie 3.开发者空间介绍及如何在空间用仓颉编程语言开发
回顾中 -
大模型Prompt工程深度实践
2025/02/24 周一 16:00-17:30
盖伦 华为云学堂技术讲师
如何让大模型精准理解开发需求并生成可靠输出?本期直播聚焦大模型Prompt工程核心技术:理解大模型推理基础原理,关键采样参数定义,提示词撰写关键策略及Prompt工程技巧分享。
去报名 -
华为云 x DeepSeek:AI驱动云上应用创新
2025/02/26 周三 16:00-18:00
华为云 AI专家大咖团
在 AI 技术飞速发展之际,DeepSeek 备受关注。它凭借哪些技术与理念脱颖而出?华为云与 DeepSeek 合作,将如何重塑产品与应用模式,助力企业数字化转型?在华为开发者空间,怎样高效部署 DeepSeek,搭建专属服务器?基于华为云平台,又该如何挖掘 DeepSeek 潜力,实现智能化升级?本期直播围绕DeepSeek在云上的应用案例,与DTSE布道师们一起探讨如何利用AI 驱动云上应用创新。
去报名
热门标签