1. 程式人生 > 資料庫 >docker建立mongodb並且測試程式碼

docker建立mongodb並且測試程式碼

mongodb

docker 安裝mongodb-建立使用者

 docker run -itd --name mongo -p 27017:27017 mongo --auth

進入資料庫新增密碼

  docker exec -it mongo mongo admin
 ​
 # 建立一個名為 admin,密碼為 123456 的使用者。
 ​
 db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
 ​
 # 嘗試使用上面建立的使用者資訊進行連線。
 ​
 db.auth('admin', '123456')
 使用這個賬號連線navicat是可以正常使用的,但是連線java程式碼會報錯
 ​
 org.springframework.data.mongodb.UncategorizedMongoDbException:
  Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='admin', source='cloud_iexe', password=<hidden>, mechanismProperties=<hidden>}; nested exception is com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='admin', source='cloud_iexe', password=<hidden>, mechanismProperties=<hidden>}
 ​

於是我們百度了一下: -->建立新使用者

 db.createUser(
      {
        user: "wenqiang",
        pwd: "1438438",
        roles: ["readWrite"]
      }
 )

使用新使用者進行登入並測試插入程式碼

 @Document(collection = "user")
 public class MongoUser implements Serializable {
     @Id
     private String id;
 ​
     @Field("user_name")
     private String userName=null;
 ​
     private String note=null;
 ​
     @Field("roles")
     private List<MongoRole> roleList=null;
 ​
     public String getId() {
         return id;
    }
 ​
     public void setId(String id) {
         this.id = id;
    }
 ​
     public String getUserName() {
         return userName;
    }
 ​
     public void setUserName(String userName) {
         this.userName = userName;
    }
 ​
     public String getNote() {
         return note;
    }
 ​
     public void setNote(String note) {
         this.note = note;
    }
 ​
     public List<MongoRole> getRoleList() {
         return roleList;
    }
 ​
     public void setRoleList(List<MongoRole> roleList) {
         this.roleList = roleList;
    }
 }
 ​

db: 可以用通過template也可以用:

 public interface MongoDbUserRepository extends MongoRepository<MongoUser,String> {
 }
 ​
     public MongoUser saveUser(MongoUser mongoUser){
         MongoUser mongoUser1=mongoDbUserRepository.save(mongoUser);
         return mongoUser1;
    }

 

  @Autowired
     private MongoUserServiceImpl mongoUserService;
 ​
     @Test
     public void saveMongoUser(){
         MongoUser mongoUser=new MongoUser();
         mongoUser.setId("1");
         mongoUser.setUserName("亞索");
         mongoUser.setNote("托兒索");
         MongoRole mongoRole=new MongoRole();
         mongoRole.setId("3");
         mongoRole.setRoleName("中單");
         mongoRole.setNote("快樂風男");
         List<MongoRole> mongoRoleList=new ArrayList<MongoRole>();
         mongoRoleList.add(mongoRole);
         mongoUser.setRoleList(mongoRoleList);
         logger.info("新增使用者{}",new Gson().toJson(mongoUserService.saveUser(mongoUser)));
    }