Спецификация HTML5 предлагает простое регулярное выражение для проверки адресов электронной почты:
/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
Это намеренно не соответствует RFC 5322 .
Примечание. Это требование является преднамеренным нарушением из RFC 5322 , которое определяет синтаксис для адресов электронной почты, которые одновременно слишком строги ( перед символом
@
), слишком расплывчатым (после символа@
) и слишком слабым (позволяя использовать комментарии, пробельные символы и кавычки в манерах, незнакомых большинству пользователей).Общая длина также может быть ограничена 254 символами, за RFC 3696 errata 1690 .
Я тоже царапал себе голову по одной и той же проблеме, и все работало после того, как я установил роль root при добавлении первого пользователя admin.
use admin
db.createUser(
{
user: "admin",
pwd: "password",
roles: [ { role: "root", db: "admin" } ]
}
);
exit;
Для получения полной справки по настройке подлинности см. шагов Я собрал после нескольких часов исследований в Интернете.
Возможно, быстрый пример того, как изменить текущего пользователя, будет полезен кому-то. Это то, что я действительно искал.
Следуя советам @JohnPetrone, я добавил readWrite роль моему пользователю admin с grantRolesToUser
> use admin
> db.grantRolesToUser("admin",["readWrite"])
> show collections
system.users
system.version
Возможно, это связано с тем, что вы не указали noAuth = true в файле mongodb.conf
# Turn on/off security. Off is currently the default
noauth = true
#auth = true
После установки этого перезапуска служба с использованием
службы mongod restart
Я знаю, что этот ответ наступает очень поздно в этой теме, но я надеюсь, что вы это проверите.
Причина, по которой вы получаете эту ошибку, основана на конкретной роли, которую вы предоставили пользователю, которая вы уже собрались, и да, давая этому пользователю, роль root
решит вашу проблему, но вы должны сначала понять, что эти роли выполняют, прежде чем предоставлять их пользователям.
В учебном пособии вы предоставили пользователю роль userAdminAnyDatabase
, которая в основном дает пользователю возможность управлять пользователями всех ваших баз данных.
Роль root
включает эту роль в определение, а также readWriteAnyDatabase
, dbAdminAnyDatabase
и другие роли, суперпользователь (в основном потому, что вы можете с ним что-либо делать).
Вы можете проверить определения роли, чтобы узнать, какие роли вам понадобятся, чтобы дать вам пользователям выполнить определенные задачи. https://docs.mongodb.com/manual/reference/built-in-roles/ Не рекомендуется делать все ваши пользователи супер:)
У меня была аналогичная проблема в среде Windows: я установил Bitnami DreamFactory, а также установил еще один MongoDb, который запускается при загрузке системы. Я запускал свой MongoDbService (который был запущен без какой-либо ошибки), но я заметил, потеряв много времени, что я фактически подключился к службе MongoDb Bitnami. Пожалуйста, посмотрите, нет ли на вашем сервере другого экземпляра mongoDB.
Удачи!
Это немного запутанно - я считаю, что вам нужно предоставить readWrite для запроса базы данных. Пользователь с dbadmin или useradmin может администрировать базу данных (включая предоставление дополнительных прав), но не может выполнять запросы или записывать данные.
, так что дайте себе readWrite, и вы должны быть в порядке -
http://docs.mongodb.org/manual/reference/built-in-roles/#readWrite
Вы можете попробовать: Использование флажка --authenticationDatabase помогает.
mongo --port 27017 -u "admin" -p "password" --authenticationDatabase "admin"
Кроме того, обратите внимание, что если ваш клиент оболочки mongo не смог правильно подключиться к экземпляру mongod
, вы можете получить такие ошибки с разрешением отказа.
Убедитесь, что ваш клиент открывает соединение проверьте порт подключения, но также и то, что порт, который вы используете в mongod
, не используется. Вы можете установить другой порт, используя параметр --port <port>
как в оболочке, так и в процессе.