mongodb 常用操作命令
1.关闭mongodb
use admin
db.shutdownServer()
2.报错 not master and slaveok=false
rs.slaveOk();
3.查看集群副本的状态
rs.status();rs.config()
4.重置集群配置文件
config = { _id:"repl_test", members:[{_id:2,host:"10.40.6.110:27017"}]}
rs.reconfig(config, { force: true})
5.几个权限角色解释
dbAdmin:“数据库管理员”,可以对指定的数据库,进行创建索引、schema调整、统计信息搜集等,比如“dbStats”、“collStats”、“createCollection”、“createIndex”等;但是它不能创建用户和role
dbAdminAnyDatabase:是所有数据库的管理员
dbOwner:“数据库持有者”,继承“readWrite”、“dbAdmin”、“userAdmin”三种角色
root:root角色是一个超级角色,此角色的用户具有所有的操作权限
userAdmin:“用户管理员”,可以对指定的数据库,创建用户、修改用户的roles;这种角色,只能管理用户,不能访问数据库的数据
userAdminAnyDatabase:是所有数据库的用户管理员
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
内部角色:__system
6.创建用户账号
use admin;
db.createUser(
{
user: "zhanghao",
pwd: "123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
db.createUser(
{
user: "zhanghao_root",
pwd: "123",
roles: [ { role: "root", db: "admin" } ]
}
)
添加管理员用户
修改密码
db.updateUser( "root",{pwd:"123"});
db.changeUserPassword("username", "xxx")
密码认证
db.auth("admin","password");
删除用户
db.dropUser("football");
查看用户信息
db.runCommand({usersInfo:"userName"})
数据库帐号是跟着数据库来走的,哪里创建哪里认证,意思在admin库创建的其他库的账号认证信息只能在admin下认证
查看所有库的所有用户信息
db.system.users.find().pretty()
查看当前数据库的信息
db.getName() db.stats()
7.创建keyfile文件,在一台机器生成,然后传到其他副本的机器
openssl rand -base64 741 > /data/mongodb/keyfile
chmod 600 /data/mongodb/keyfile
8.将新的节点加入集群
rs.add("10.40.6.108:27017")
9.查看复制情况
db.printSlaveReplicationInfo()
10.修改集群的priority,强制把指定的节点升级为主
cfg=rs.conf()
cfg.members[1].priority=2
rs.reconfig(cfg)
11.移除某个节点
rs.remove("10.40.6.68:27017")
12.添加仲裁节点,如果原来是数据节点,会导致重启
rs.addArb("10.40.6.68:27017")