docker建立mongodb並且測試程式碼
阿新 • • 發佈:2021-01-18
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)));
}