新聞中心
MongoDB是一種基于文檔,支持動(dòng)態(tài)查詢的分布式數(shù)據(jù)庫,它使用一種稱為BSON的二進(jìn)制ON(Java Script Object Notation)格式來存儲(chǔ)數(shù)據(jù)。作為一款現(xiàn)代化的數(shù)據(jù)庫,MongoDB的安全策略也是非常嚴(yán)謹(jǐn)?shù)?。在MongoDB數(shù)據(jù)庫進(jìn)行操作之前,需要先進(jìn)行登陸驗(yàn)證,否則無法進(jìn)行任何操作。那么,如何進(jìn)行MongoDB數(shù)據(jù)庫的登陸呢?下面就為大家分享MongoDB數(shù)據(jù)庫的登陸方法。

發(fā)展壯大離不開廣大客戶長(zhǎng)期以來的信賴與支持,我們將始終秉承“誠(chéng)信為本、服務(wù)至上”的服務(wù)理念,堅(jiān)持“二合一”的優(yōu)良服務(wù)模式,真誠(chéng)服務(wù)每家企業(yè),認(rèn)真做好每個(gè)細(xì)節(jié),不斷完善自我,成就企業(yè),實(shí)現(xiàn)共贏。行業(yè)涉及門簾等,在網(wǎng)站建設(shè)、成都全網(wǎng)營(yíng)銷推廣、WAP手機(jī)網(wǎng)站、VI設(shè)計(jì)、軟件開發(fā)等項(xiàng)目上具有豐富的設(shè)計(jì)經(jīng)驗(yàn)。
一、使用用戶和密碼進(jìn)行登陸
在使用MongoDB數(shù)據(jù)庫時(shí),如果需要進(jìn)行登陸驗(yàn)證,則可以使用用戶名和密碼進(jìn)行身份驗(yàn)證。具體的登陸方法如下:
1. 啟動(dòng)MongoDB服務(wù),并打開控制臺(tái)界面。
2. 在控制臺(tái)中輸入以下命令:
“`mongo –username 用戶名 –password 密碼“`
其中,用戶名和密碼為登錄MongoDB數(shù)據(jù)庫的賬戶和密碼。
3. 如果輸入的用戶名和密碼正確,則控制臺(tái)窗口顯示:
“`
MongoDB shell version v4.4.1
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { “id” : UUID(“c350699a-b2bb-445f-9abf-88146b0442dd”) }
MongoDB server version: 4.4.1
Welcome to the MongoDB shell.
For interactive help, type “help”.
For more comprehensive documentation, see
http://docs.mongodb.org/
>
“`
其中,最后一行的命令提示符 `>` 表示用戶已經(jīng)成功登錄。
二、使用認(rèn)證數(shù)據(jù)庫進(jìn)行登陸
1. 啟動(dòng)MongoDB服務(wù),并打開控制臺(tái)界面。
2. 在控制臺(tái)中輸入以下命令:
“`
mongo –port 端口號(hào) -u 用戶名 -p 密碼 –authenticationDatabase=認(rèn)證數(shù)據(jù)庫名稱
“`
其中,端口號(hào)為MongoDB服務(wù)的端口號(hào),用戶名和密碼為登錄MongoDB數(shù)據(jù)庫的賬戶和密碼,認(rèn)證數(shù)據(jù)庫名稱為用戶的認(rèn)證數(shù)據(jù)庫名稱。
3. 如果輸入的信息正確,則控制臺(tái)窗口會(huì)顯示該MongoDB服務(wù)的連接狀態(tài)。
三、使用認(rèn)證憑證進(jìn)行登陸
在MongoDB 2.6版本以后,提供了使用認(rèn)證憑證進(jìn)行登陸的方法,具體方法如下:
1. 在控制臺(tái)中輸入以下命令創(chuàng)建一個(gè)用戶賬號(hào):
“`
use admin
db.createUser (
{
user: “用戶名”,
pwd: “密碼”,
roles: [ { role: “userAdminAnyDatabase”, db: “admin” }, “readWriteAnyDatabase” ]
}
)
“`
其中,用戶名和密碼為登錄MongoDB數(shù)據(jù)庫的賬戶和密碼。
2. 創(chuàng)建用戶完成之后,使用以下命令進(jìn)行登陸:
“`
mongo -u 用戶名 -p 密碼 –authenticationDatabase admin
“`
然后,輸入賬號(hào)和密碼,即可成功登陸。
需要注意的是,使用認(rèn)證憑證進(jìn)行登陸時(shí),必須要有一個(gè)至少擁有 `userAdminAnyDatabase` 角色的用戶來進(jìn)行操作。
:
以上就是MongoDB數(shù)據(jù)庫的登陸方法,我們可以根據(jù)自己的需求來選擇使用哪種方法。同時(shí),為了數(shù)據(jù)庫的安全性,我們還應(yīng)該定期更改密碼或者使用更加嚴(yán)格的認(rèn)證方式,以提高數(shù)據(jù)庫的安全性。
相關(guān)問題拓展閱讀:
- Oracle或sqlserver或mysql如何連接到MongoDB??
- 如何啟動(dòng)MongoDB的WEB界面
Oracle或sqlserver或mysql如何連接到MongoDB??
個(gè)人感覺,,這時(shí)候,,你需要一個(gè) Navicat Premium
在MongoDB中,纖衫文檔是對(duì)數(shù)據(jù)的抽象,它被使用在Client端和Server端的交互中。所有的Client端(各種語言的Driver)都會(huì)使用這種抽象,它的表現(xiàn)形式就是我們常說的BSON(Binary ON )。
BSON是一個(gè)輕量級(jí)的搏豎輪二進(jìn)制數(shù)據(jù)格式。
MongoDB能夠使用BSON,并將BSON作為數(shù)據(jù)的存儲(chǔ)存放在磁盤中。
當(dāng)Client端要將寫入文檔,使用查詢等等操作時(shí),需要將文檔編碼為BSON格式,然后再發(fā)送給Server端。同樣,Server端基信的返回結(jié)果也是編碼為BSON格式再放回給Client端的。
如何啟動(dòng)MongoDB的WEB界面
讓我們構(gòu)建一個(gè)簡(jiǎn)單的EmployeeManager Web服務(wù),我們將使用它來演示與MongoDB連接的HATEOAS。為了引導(dǎo)我們的
應(yīng)用程序
,我們將使用Spring Initializr。我們將使用Spring HATEOAS和Spring Data MongoDB作為依賴項(xiàng)。你應(yīng)該看到類似下圖2所示的內(nèi)容。 圖2 :引導(dǎo)應(yīng)用程序配置完成后,下載zip并將其作為Maven項(xiàng)目導(dǎo)入你喜神檔敬歡的IDE中。 首先,讓我們配置application.properties。要獲得MongoDB連接,spring.data.mongodb.host= //Mongo server host
spring.data.mongodb.port= //Mongo server port
spring.data.mongodb.username= //Login user
spring.data.mongodb.password= //Password
spring.data.mongodb.database= //Database name
一般來說,如果所有內(nèi)容都是全新安裝的,并且你沒有更改或修改任何Mongo屬性,則只需提供一個(gè)數(shù)據(jù)庫名稱(已經(jīng)通過GUI創(chuàng)建了一個(gè)數(shù)據(jù)庫名稱)。
spring.data.mongodb.database = EmployeeManager
另外,為了啟動(dòng)Mongo實(shí)例,作者創(chuàng)建了一個(gè)
.bat
,它指向安裝
文件夾
和數(shù)據(jù)文件夾。它是這樣的:”C:\Program Files\MongoDB\Server\3.6\bin\mongod” –dbpath D:\Inther\EmployeeManager\warehouse-data\db
現(xiàn)在,我們來快速創(chuàng)建模型。這里有兩個(gè)模型,員工模型和部門模型。檢查它們,確保有沒有參數(shù)、getter、setter、equals方法和hashCode生成的
構(gòu)造函數(shù)
。(不用擔(dān)心,所有代碼都在GitHub上,你可以稍后查看它:
public class Employee {
private String employeeId;
private String firstName;
private String lastName;
private int age;
}
public class Department {
private String department;
private String name;
private String description;
private List employees;
}
現(xiàn)在我們已經(jīng)完成了模型的制作,讓我們來創(chuàng)建存儲(chǔ)庫,以便來測(cè)試持久性。存儲(chǔ)庫如下所示:
public interface EmployeeRepository
extends MongoRepository {
}
public interface DepartmentRepository
extends MongoRepository{
}
如上所示,這里沒有方法,因?yàn)榇蠹叶贾繱pring Data中的中心接口被命名為Repository,在其之上是CrudRepository,它提供了處理模型的基游慎本操作。在CrudRepository之上,我們有PagingAndSortingRepository,它為我們提供了一些擴(kuò)展功能,來簡(jiǎn)化分頁和排序訪問。在我們的案例中,最重要的是MongoRepository,它用于嚴(yán)格處理我們的Mongo實(shí)例。因此,對(duì)于我們的案例來說,除了那些現(xiàn)成的方法外,我們不需要任何其他方法,但是僅出于學(xué)習(xí)目的,作者在這里要提到的是你可以添加其他查詢方法的兩蠢昌種方法:
“惰性”(查詢創(chuàng)建):此策略將嘗試通過分析查詢方法的名稱并推斷關(guān)鍵字(例如findByLastnameAndFirstname)來構(gòu)建查詢。
編寫查詢:這里沒有什么特別的。例如,只用@Query注釋你的方法,然后自己編寫查詢。你也可以在MongoDB中編寫查詢。下面是基于ON的查詢方法的示例:
@Query(“{ ‘firstname’ : ?0 }”)
List findByTheEmployeesFirstname(String firstname);
至此,我們已經(jīng)可以測(cè)試我們持久性如何工作。我們只需要對(duì)模型進(jìn)行一些調(diào)整即可。通過調(diào)整,作者的意思是我們需要注釋一些東西。Spring Data MongoDB使用MappingMongoConverter將對(duì)象映射到文檔,下面是我們將要使用的一些注釋:
@Id :字段級(jí)別注釋,指出你的哪個(gè)字段是身份標(biāo)識(shí)。
@Document :類級(jí)別的注釋,用于表示該類將被持久化到數(shù)據(jù)庫中。
@DBRef :描述參考性的字段級(jí)別注釋。
注釋完成后,我們可以使用CommandLineRunner獲取數(shù)據(jù)庫中的一些數(shù)據(jù),CommandLineRunner是一個(gè)接口,用于在應(yīng)用程序完全啟動(dòng)時(shí)(即在run()方法之前)運(yùn)行代碼段。在下面,你可以看一下作者的Bean配置。
@Bean public CommandLineRunner init(EmployeeRepository employeeRepository, DepartmentRepository departmentRepository) {
return (args) -> {
employeeRepository.deleteAll();
departmentRepository.deleteAll();
Employee e = employeeRepository.save(new Employee(“Ion”, “Pascari”, 23));
departmentRepository.save(new Department(“Service Department”, “Service Rocks!”, Arrays.asList(e)));
for (Department d : departmentRepository.findAll()) {
LOGGER.info(“Department: ” + d);
}
};
}
我們已經(jīng)創(chuàng)建了一些模型,并對(duì)它們進(jìn)行了持久化?,F(xiàn)在,我們需要一種與他們交互的方式。如上所說,所有代碼都可以在GitHub上找到,因此作者在這里將僅向我們展示一個(gè)域服務(wù)(接口和實(shí)現(xiàn))。接口如下:
public interface EmployeeService {
Employee saveEmployee(Employee e);
Employee findByEmployeeId(String employeeId);
void deleteByEmployeeId(String employeeId);
void updateEmployee(Employee e);
boolean employeeExists(Employee e);
List findAll();
void deleteAll();
}
接口的實(shí)現(xiàn)如下:
@Service public class EmployeeServiceImpl implements EmployeeService {
@Autowired
private EmployeeRepository employeeRepository;
@Override
public Employee saveEmployee(Employee e) {
return employeeRepository.save(e);
}
@Override
public Employee findByEmployeeId(String employeeId) {
return employeeRepository.findOne(employeeId);
}
@Override
public void deleteByEmployeeId(String employeeId) {
employeeRepository.delete(employeeId);
}
@Override
public void updateEmployee(Employee e) {
employeeRepository.save(e);
}
@Override
public boolean employeeExists(Employee e) {
return employeeRepository.exists(Example.of(e));
}
@Override
public List findAll() {
return employeeRepository.findAll();
}
@Override
public void deleteAll() {
employeeRepository.deleteAll();
}
}
這里沒有什么特別的要注意的,下面我們將繼續(xù)討論最后一個(gè)難題——控制器!你可以在下面看到員工資源的控制器實(shí)現(xiàn)。
@RestController
@RequestMapping(“/employees”)
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
@RequestMapping(value = “/list/”, method = RequestMethod.GET)
public HttpEntity> getAllEmployees() {
List employees = employeeService.findAll();
if (employees.isEmpty()) {
return new ResponseEntity(HttpStatus.NO_CONTENT);
} else {
return new ResponseEntity(employees, HttpStatus.OK);
}
}
@RequestMapping(value = “/employee/{id}”, method = RequestMethod.GET)
public HttpEntity getEmployeeById(@PathVariable(“id”) String employeeId) {
Employee byEmployeeId = employeeService.findByEmployeeId(employeeId);
if (byEmployeeId == null) {
return new ResponseEntity(HttpStatus.NOT_FOUND);
} else {
return new ResponseEntity(byEmployeeId, HttpStatus.OK);
}
}
@RequestMapping(value = “/employee/”, method = RequestMethod.POST)
public HttpEntity saveEmployee(@RequestBody Employee e) {
if (employeeService.employeeExists(e)) {
return new ResponseEntity(HttpStatus.CONFLICT);
} else {
Employee employee = employeeService.saveEmployee(e);
URI location = ServletUriComponentsBuilder .fromCurrentRequest().path(“/employees/employee/{id}”)
.buildAndExpand(employee.getEmployeeId()).toUri();
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setLocation(location);
return new ResponseEntity(httpHeaders, HttpStatus.CREATED);
}
}
@RequestMapping(value = “/employee/{id}”, method = RequestMethod.PUT)
public HttpEntity updateEmployee(@PathVariable(“id”) String id, @RequestBody Employee e) {
Employee byEmployeeId = employeeService.findByEmployeeId(id);
if(byEmployeeId == null){
return new ResponseEntity(HttpStatus.NOT_FOUND);
} else {
byEmployeeId.setAge(e.getAge());
byEmployeeId.setFirstName(e.getFirstName());
byEmployeeId.setLastName(e.getLastName());
employeeService.updateEmployee(byEmployeeId);
return new ResponseEntity(employeeService, HttpStatus.OK);
}
}
@RequestMapping(value = “/employee/{id}”, method = RequestMethod.DELETE)
public ResponseEntity deleteEmployee(@PathVariable(“id”) String employeeId) {
employeeService.deleteByEmployeeId(employeeId);
return new ResponseEntity(HttpStatus.NO_CONTENT);
}
@RequestMapping(value = “/employee/”, method = RequestMethod.DELETE)
public ResponseEntity deleteAll() {
employeeService.deleteAll();
return new ResponseEntity(HttpStatus.NO_CONTENT);
}
}
因此,對(duì)于上面實(shí)現(xiàn)的所有方法,我們將自己定位在Richardson成熟度模型的第二級(jí),因?yàn)槲覀兪褂昧薍TTP動(dòng)詞并實(shí)現(xiàn)了CRUD操作?,F(xiàn)在,我們有了與數(shù)據(jù)進(jìn)行交互的方法,并且可以使用Postman,我們可以如下圖3所示檢索資源,或者可以如下圖4所示添加新資源。
圖3 :檢索ON中的部門列表
圖4:ON中添加新員工
修改/etc/mongodb.conf,添攔悔廳加如下行:
httpinterface=true
mongodb.conf內(nèi)容如下:
bash-4.2$ cat /etc/mongodb.conf
port=27017 #端口
dbpath= /data/mongodb #數(shù)據(jù)文件存放目錄
logpath= /data/mongodb/logs/mongodb.log #日志文件存放目錄
logappend=true #使用追加的方式寫日志
fork=true #以守護(hù)程序的方式前哪啟用,即在后臺(tái)運(yùn)行
maxConns=500 #更大同簡(jiǎn)隱時(shí)連接數(shù)
noauth=true #不啟用驗(yàn)證
journal=true
storageEngine=wiredTiger
httpinterface=true #啟動(dòng)http界面,端口號(hào)為28017
手動(dòng)用命令啟動(dòng)mongodb:
bash-4.2$ mongod –config /etc/mongodb.conf –rest
about to fork child process, waiting until server is ready for connections.
forked process: 4203
child process started successfully, parent exiting
……………………………………………………………………
(注釋: –rest代表turn on simple rest api)
查看啟動(dòng)日志:
bash-4.2$ tail -f /data/mongodb/logs/mongodb.log
T17:29:13.766+0800 I CONTROL
T17:29:13.996+0800 I FTDC Initializing
full-time diagnostic data capture with directory
‘/data/mongodb/diagnostic.data’
T17:29:13.999+0800 I NETWORK admin web console waiting for connections on port 28017
T17:29:13.999+0800 I NETWORK Starting hostname canonicalization worker
T17:29:14.023+0800 I NETWORK waiting for connections on port 27017
T17:29:16.631+0800 I NETWORK connection accepted from 127.0.0.1:50609 #1 (1 connection now open)
T17:29:34.679+0800 I NETWORK Socket recv() errno:11 Resource temporarily unavailable 192.168.23.1:61067
T17:29:52.455+0800 I NETWORK Socket recv() errno:11 Resource temporarily unavailable 192.168.23.1:61076
T17:30:00.455+0800 I NETWORK Socket recv() errno:11 Resource temporarily unavailable 192.168.23.1:61077
T17:30:33.228+0800 I NETWORK end connection 127.0.0.1:50609 (0 connections now open)
waiting for connections on port 27017字樣代表MongoDB已成功啟動(dòng)。
查看本地IP地址:
bash-4.2$ ifconfig -a
eno: flags=4163 mtu 1500
inet 192.168.23.131 netmask 255.255.255.0 broadcast 192.168.23.255
inet6 fe80::20c:29ff:feb2:3e46 prefixlen 64 scopeid 0x20
ether 00:0c:29:b2:3e:46 txqueuelen(Ethernet)
RX packetytes(1.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packetytes(155.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
打開本地瀏覽器,輸入以下地址:
通過web頁面可以看到:
1.當(dāng)前Mongodb的所有連接
2.各個(gè)數(shù)據(jù)庫和Collection的訪問統(tǒng)計(jì),包括:Reads, Writes, Queries, GetMores ,Inserts, Updates, Removes
3.寫鎖的狀態(tài)
4.以及日志文件的最后幾百行(安裝的mongodb默認(rèn)的日志文件位于/data/mongodb/logs/mongod.log)
5.所有的MongoDB命令
1:log一定要指定一個(gè)xxx.log文件(文件不存在也要這么寫,會(huì)自動(dòng)創(chuàng)建,寫成這樣是不可以的–logpath d:\mongodb\logs)
2:serviceName的N字母要大寫
注意:這條命令要到MongoDB的bin目錄下運(yùn)行,剛開始的時(shí)候,我就直接在D:\下運(yùn)行,結(jié)果服務(wù)的可執(zhí)行目錄為【”D:\mongod” –logpath “D:\MongoDB\logs\MongoDB.log” –logappend –dbpath “D:\MongoDB\data” –directoryperdb –service 】,肯定是不對(duì)的。
該命令行指定了日志文件:E:\APMServ5.2.6\MongoDb\logs\MongoDB.log,日志是以追加的方式輸出的;
數(shù)據(jù)文件目錄:E:\APMServ5.2.6\MongoDb\data,并且參數(shù)–directoryperdb說明每個(gè)DB都會(huì)新建一個(gè)目錄;
Windows服務(wù)的名稱:MongoDB;
以上的三個(gè)參數(shù)都是可以根據(jù)自肆手己的情況而定的,呵呵。
最后是閉雹裂安裝參數(shù):–install,與之相對(duì)的是–remove
啟動(dòng)MongoDB:net start MongoDB
停止MongoDB:net stop MongoDB
刪除MongoDB:sc delete MongoDB
或
運(yùn)行→regedit→注轎閉冊(cè)表編輯器→HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services 下面顯示的就是所安裝的服務(wù)項(xiàng),刪除相應(yīng)的就好
mongodb登陸數(shù)據(jù)庫的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于mongodb登陸數(shù)據(jù)庫,MongoDB數(shù)據(jù)庫登陸方法分享,Oracle或sqlserver或mysql如何連接到MongoDB??,如何啟動(dòng)MongoDB的WEB界面的信息別忘了在本站進(jìn)行查找喔。
成都服務(wù)器托管選創(chuàng)新互聯(lián),先上架開通再付費(fèi)。
創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)-網(wǎng)站建設(shè),軟件開發(fā)老牌服務(wù)商!微信小程序開發(fā),APP開發(fā),網(wǎng)站制作,網(wǎng)站營(yíng)銷推廣服務(wù)眾多企業(yè)。電話:028-86922220
新聞名稱:MongoDB數(shù)據(jù)庫登陸方法分享 (mongodb登陸數(shù)據(jù)庫)
文章位置:http://www.dlmjj.cn/article/dhgpipe.html


咨詢
建站咨詢
