mysql explain時,user表主鍵跟引用表(comment表)關聯,始終為all,原因是:
user表有18萬條記錄,主鍵
`id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '用戶id',
而comment表的引用
`user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '評論用戶id',
字符集不相同位數也不同,引起的,查詢關聯不能按照主鍵關聯,始終為all級別
解決方法:把 字符集和位數調到一樣即可,一下從all級別調到了eq_ref 的級別
初始安裝的時候沒有admin數據庫
開啟認證
修改配置文件/etc/MongoDB.conf
打開auth的注釋,設置為auth = true
重啟mongodb
sudo service mongodb restart
添加管理員
使用命令mongo進入命令行
創建第一個用戶,該用戶需要有用戶管理權限
這里設置其角色為root
use admin
db.createUser({user:"admin",pwd:"password",roles:["root"]})
新增的用戶在system.users中
> db.getCollectionNames()
[ "system.indexes", "system.users", "system.version" ]
第一個用戶添加完成后,便需要認證才能繼續添加其他用戶
使用db.auth("admin", "password")認證
添加數據庫用戶
為其他數據庫添加用戶,添加用戶前需要切換到該數據庫
這里設置其角色為dbOwner
use testdb1
db.createUser({user: "testdb1u1", pwd: "xyz123", roles: [{ role: "dbOwner", db: "testdb1" }]})
查看用戶
> use admin
switched to db admin
> db.system.users.find()
{ "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "Fdh2ldIW3Aw8Cxz9Dt+96g==", "storedKey" : "zbkfj6ZQH1xwGoOg8JJ6OjtR3Cs=", "serverKey" : "yqkqHABZ64rEeq1X0htOAtUnwFU=" } }, "roles" : [ { "role" : "root", "db" : "admin" } ] }
{ "_id" : "testdb1.testdb1u1", "user" : "testdb1u1", "db" : "testdb1", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "Xxt2uET3jRtAYVigyLUydw==", "storedKey" : "yinLG61nRFzfC+3NtB5p9RR+avM=", "serverKey" : "OX/Pdft7JWJm/g0jg07q49OC4c8=" } }, "roles" : [ { "role" : "dbOwner", "db" : "testdb1" } ] }