一、安装数据库如果必要可先更新yum包管理,下面以CentOS系统为例:$ yum -y update1、安装Mongodb查看当前系统版本$ cat /etc/redhat-release打开 https://repo.mongodb.org/yum/… ,选择适合自己系统的mongo版本,然后编辑Mongodb安装源,下面以3.6为例:$ sudo vi /etc/yum.repos.d/mongodb-org-3.6.repo编辑内容(根据自己的mongo版本替换下面的3.6字样):[mongodb-org-3.6]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc安装:$ yum install mongodb-org2、修改Mongo配置mongo配置文件路径:/etc/mongod.conf,但如果用mongod命令直接运行(非service运行),此时若不用-f指定配置文件,mongo会使用内在配置,dbpath也默认存放在/data/db下$ vi /etc/mongod.conf#————————————————————————# 可修改数据库存放位置storage: dbPath: /var/lib/mongodb# 若要支持远程连接,需将默认的127.0.0.1改为:net: bindIp: 0.0.0.0# 若需数据库权限认证,开启下面配置:security: authorization: enabled若远程连接工具Robo 3T还是不能连接,需在防火墙增加端口:$ sudo /sbin/iptables -I INPUT -p tcp –dport 27017 -j ACCEPT二、运行数据库1、启动$ service mongod start # 自动使用配置/etc/mongod.conf# 或手动指定配置文件启动:$ sudo mongod -f /etc/mongod.conf –fork # –fork后台运行# 若以权限认证运行$ sudo mongod -f /etc/mongod.conf –auth –fork若启动出现timeout错误时,可查看service里的pid与config里的pid是否相同,不一致则修改:$ sudo vi /usr/lib/systemd/system/mongod.service # 修改pid$ systemctl daemon-reload # 重新加载service服务$ service mongod start2、重启$ service mongod restart3、关闭$ service mongod stop或手动关闭$ sudo mongod -f /etc/mongod.conf –shutdown4、随系统启动默认安装后即随机启动,无须设置$ chkconfig mongod on三、操作数据库1、数据管理1.) 数据库操作# 进入mongo$ mongo# 显示当前数据库,默认定位test数据库> db;# 显示所有数据库> show dbs;# 切换/创建数据库> use xxx;# 从指定主机克隆数据库> db.cloneDatabase(‘主机’);# 从指定主机上复制A库数据到B库> db.copyDatabase(‘A库’, ‘B库’, ‘主机’); # 删除数据库> db.dropDatabase();# 修复数据库> db.repairDatabase();# 查看当前db的链接机器地址> db.getMongo(); # 退出mongo> exit;2.) 集合(表)/记录操作# 显示所有集合> db.getCollectionNames();# 创建集合> db.createCollection(‘users’, {size: 1024, max: 1000}); # 最大1M,1000条# 显示第一条记录> db.users.findOne();# 显示集合下所有记录> db.users.find();# 新增记录> db.users.save({name: ‘wang’, age: 8});# 根据条件查询> db.users.find({age: 8}); # 修改记录(后面两个参数:第一个表示找不到则新建一条,第二个表示更新多条)db.users.update({name: ‘wang’}, {$set: {sex: ‘male’}}, false, true)# 删除记录db.users.remove({age: 8}); 2、用户管理1.) 用户类型 常用的用户类型有:read/readWrite:读写指定数据库 userAdminAnyDatabase:所有数据库的用户管理权限,有分配角色和用户的权限,但没有读写的权限,在admin库授权 readWriteAnyDatabase:所有数据库的读写权限,在admin库授权 root:超级账号,超级权限,在admin库授权2.) 常用用户指令# 显示所有用户> show users;# 新建用户> db.createUser({user:‘用户名’,pwd:‘密码’,roles:[{role:‘角色’,db:‘库’}]});# 若当前数据库与目标库相同,可简写:> db.createUser({user:‘用户名’,pwd:‘密码’,roles:[‘角色’]});# 追加用户权限> db.grantRolesToUser(‘用户名’,[{role:‘角色’,db:‘库’}]);# 修改用户权限> db.updateUser(‘用户名’,{roles:[‘角色1’,‘角色2’]});# 更新密码> db.changeUserPassword(‘用户名’,‘密码’);# 或> db.updateUser(‘用户名’,{pwd:‘密码’});# 删除用户> db.dropUser(‘用户名’);3.) 管理用户创建root、AnyDatabase角色用户、cluster集群等用户只能在admin库下创建> use admin;# 超级管理员> db.createUser({user:‘root’,pwd:‘密码’,roles:[‘root’]});# user管理员账号> db.createUser({user:‘用户名’,pwd:‘密码’,roles:[‘userAdminAnyDatabase’]});# 任意库读写账号> db.createUser({user:‘用户名’,pwd:‘密码’,roles:[‘readWriteAnyDatabase’]};# 普通读写用户(可以在admin库下创建,但认证时也需在admin库)> db.createUser({user:‘用户名’,pwd:‘密码’,roles:[{role:‘readWrite’,db:‘业务库’}]});4.) 普通用户创建mongoDB的权限是跟随库的,用户在哪个库下创建的,则需在哪个库进行auth认证,如果认证库和读写目标库一致,则连接时authSource参数可省略(见第四节:连接数据库)> use xxx;> db.createUser({user:‘用户名’,pwd:‘密码’,roles:[‘readWrite’]);如果提示SCRAM-SHA-256 requires undigested passwords错误,需要加mechanisms,如下:> db.createUser({user:‘用户名’,pwd:‘密码’,roles:[‘readWrite’],mechanisms: [‘SCRAM-SHA-1’]});四、连接数据库1、shell方式连接:1.)普通登录如果mongoDB未开启认证模式,所有用户的权限与root一样,任意操作。$ mongo# 自定义host和端口$ mongo –host 主机 –port 端口2.)认证登录mongoDB的权限是跟随库的,普通用户在哪个库新建授权,就需要在哪个库进行auth验证$ mongo –host 主机 –port 端口 -u ‘用户名’ -p ‘密码’ –authenticationDatabase ‘身份认证所用库’root和AnyDatabase角色的权限只能在admin数据库里认证,如:$ mongo -u root -p 123456 –authenticationDatabase admin也可以进入数据库后再授权:$ mongo> use 认证数据库;> db.auth(‘用户名’, ‘密码’);2、URI方式连接:1.)未认证数据库mongo://主机:端口/数据库名2.)认证数据库a.)普通数据用户若当前用户认证的数据库与要操作的数据库相同,连接方式如下:mongo://用户名:密码@主机:端口/数据库名若不同,则需添加authSource,例如:在admin库里认证了,角色db却是xxxmongo://用户名:密码@主机:端口/xxx?authSource=adminb.)root和所有数据库用户若连接用户是root、*AnyDatabase角色、cluster集群的认证库都是adminmongo://用户名:密码@主机:端口/数据库名?authSource=adminc.)认证机制mongoDB支持多种认证机制, 常用的有’MONGODB-CR’ 和 ‘SCRAM-SHA-1’ 两种,官方推荐 ‘SCRAM-SHA-1’,此时不需要带在URI里,但如果是’MONGODB-CR’类型需加添加在URI上。mongo://用户名:密码@主机:端口/数据库?authMechanism=认证机制&authSource=身份认证所用库
...