Создание нового пользователя MySQL в среде Amazon RDS

Мне нужно создать нового пользователя MySQL с ограниченными правами на существующий экземпляр Amazon RDS. После появления пары сообщений об ошибках я смог сделать это с помощью официального инструмента администратора MySQL, и теперь пользователь появился в списке. Однако я не могу назначить какие-либо привилегии схемы, поскольку все пользователи неактивны. Я вошел в систему как "основной пользователь" создается при запуске экземпляра. Не уверен, куда идти отсюда. У меня действительно установлены инструменты командной строки RDS, но я также не смог ничего там отследить. идеи

Ответы на вопрос(5)

Я знаю, что этой ветке уже пару лет, и я продолжаю находить ее, поэтому я хотел бы получить обновленную информацию о AWS RDS и разрешениях пользователей.

Вы не можете использоватьGRANT ALL для любого пользователя с RDS. Когда вы используетеGRANT ALL заявление, которое вы также пытаетесь предоставитьGlobal (как их называет AWSSuper Permissions) и в связи с настройкой системы AWS RDS они не позволяют назначать глобальные параметры пользователям.

Вы должны выделить разрешения на следующее:

GRANT SELECT,INSERT,UPDATE,DELETE,DROP on

Это позволит вашему пользователю иметь возможность подключаться к RDS после настройки параметров безопасности, чтобы разрешить доступ из ваших экземпляров EC2 или из Интернета.

Надеюсь, что эта информация поможет всем, кто сталкивается с теми же проблемами, с которыми я столкнулся в системах AWS RDS.

Waldo

 30 окт. 2017 г., 01:05
Для RDS максимальные привилегии, которые вы можете добавить для пользователя в базе данных: SELECT, ALTER, UPDATE, INSERT, CREATE, DELETE, DROP, INDEX, REFERENCES
 12 июл. 2017 г., 16:18
Хорошая точка зрения! Ошибка, которую вы получаете заALL является:ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)
 08 июн. 2017 г., 04:46
Это спасает меня тоже. Я был полностью разочарован, почему послеGRANT ALL Я все еще не могу подключиться. Теперь понятно.
 04 июл. 2016 г., 18:09
Хорошее объяснение, ура.
 13 мар. 2018 г., 21:45
Я использовал графический интерфейс, который автоматически использовалGRANT ALL если все привилегии были выбраны. Добавление привилегий в два этапа, чтобы оно не использовалосьGRANT ALL позвольте мне пройти мимо "отказано в разрешении" Ошибка при попытке добавить привилегии и только слегка раздражает, когда приходится делать это в два этапа.

Я добился наибольшего успеха, используя MySQL Workbench и выполняя сырой SQL против RDS:

CREATE USER 'foo'@'localhost' IDENTIFIED BY 'password';

Большая проблема была разрешения. Изначально я пытался:

Grant ALL on *.* to 'foo'@'localhost'

... что приводит к ошибке "Отказано в доступе".

Error Code: 1045. Access denied for user 'foo'@'%' (using password: YES)

Неприятное разрешение - «супер» который RDS не дает мне, и, в свою очередь, я не могу предоставить. В результате я застрял, делая разрешения вручную:

Grant SELECT on *.* to 'foo'@'localhost';
Grant INSERT on *.* to 'foo'@'localhost';
Grant CREATE on *.* to 'foo'@'localhost';
 20 июл. 2017 г., 11:39
GRANT USAGE ON *.* TO 'foo'@'localhost' протестировано на rds mariadb, я думаю, что mysql должен быть таким же. увидетьMySQL on Amazon RDS
 17 июл. 2013 г., 23:19
если вы предоставите ВСЕ в своей базе данных. * для "foo" a "; localhost". Вы можете иметь больше успеха. * будет включать системные базы данных (схемы).

Я создал так:

CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'somepassword';
GRANT SELECT ON mydatabase.* TO 'jeffrey'@'localhost';

Но затем AWS отказался войти в систему для этого пользователя. И я попытался изменить привилегии администратора, но не успешно. И яchange 'localhost' to '%' через рабочий стол mysql. (или вы можете удалить пользователя и воссоздать) как:

CREATE USER 'jeffrey'@'%' IDENTIFIED BY 'somepassword';
GRANT SELECT ON mydatabase.* TO 'jeffrey'@'%';

Только тогда я смог войти через этого нового пользователя.

Лучше всего, вероятно, подключиться к базе данных с помощью клиента командной строки mysql и вызвать команды SQL, чтобы создать нового пользователя и назначить ему привилегии.

Например, вы можете запустить что-то вроде этого:

mysql -u [your_master_username] -p -h YOURRDSENDPOINT.rds.amazonaws.com

CREATE USER 'jeffrey'@'%' IDENTIFIED BY 'somepassword';
GRANT SELECT ON [your_database].[some_table] TO 'jeffrey'@'%';

В Windows вы можете использовать клиент mysql.exe, где бы он ни находился.

Useful Docs

Документация по группам безопасности AWS RDS (общая проблема):http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithSecurityGroups.html

Документация по созданию пользователя:http://dev.mysql.com/doc/refman/5.5/en/create-user.html

Документация о предоставлении привилегий:http://dev.mysql.com/doc/refman/5.5/en/grant.html

 20 февр. 2014 г., 18:18
Это было просто предоставлено в качестве примера, я обновлю ответ, чтобы использовать подстановочное имя хоста.
 20 февр. 2014 г., 07:32
Просто вопрос. Поскольку хост - YOURRDSENDPOINT.rds.amazonaws.com, предоставление привилегий локальному хосту работает? Я пытался сделать это довольно долго без успеха

Я использовал MySQL Workbench, и он отлично работает. просто перейдите в раздел Управление / Пользователи и привилегии, нажмите & quot; Добавить аккаунт & quot; Кнопка внизу слева, и настроить. Да, вы не можете дать СУПЕР привилегии, но большинство остальных

Ваш ответ на вопрос