Мне нужно создать нового пользователя MySQL с ограниченным разрешением на существующий экземпляр Amazon RDS. После того, как я встретил пару сообщений об ошибках, я был в состоянии сделать это, используя официальный инструмент администратора MySQL, и теперь пользователь появляется в списке. Однако я не могу назначить какие-либо привилегии схемы, так как все пользователи серые. Я вошел в систему как "главный пользователь", созданный при запуске экземпляра. Не уверен, куда идти отсюда. У меня есть инструменты командной строки RDS, но не удалось найти там ничего. Идеи
Создание нового пользователя MySQL в среде Amazon RDS
Ответ 1
Лучше всего, вероятно, подключиться к базе данных с помощью клиента командной строки 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'@'%';
В окнах вы можете использовать клиент mysql.exe, где бы это ни было.
Полезные документы
Документация групп безопасности 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
Ответ 2
Я знаю, что эта тема - пару лет, и я продолжаю ее искать, поэтому я хочу получить обновление о AWS RDS и разрешениях пользователей.
Вы не можете использовать GRANT ALL
для любого пользователя с RDS. Когда вы используете оператор GRANT ALL
, вы также пытаетесь предоставить Global
(так как AWS вызывает их Super Permissions
) и таким образом, что система AWS RDS установлена, они не позволяют назначать пользователям Global Options.
Вы должны вывести разрешения на следующее:
GRANT SELECT,INSERT,UPDATE,DELETE,DROP on
Это позволит вашему пользователю иметь возможность подключаться к RDS, как только настройки безопасности будут настроены для доступа к вашим экземплярам EC2 или из Интернета.
Надеемся, что эта информация поможет любому другому, кто сталкивается с теми же проблемами, что и я, с системами AWS RDS.
Уолдо
Ответ 3
Я создал так:
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'somepassword';
GRANT SELECT ON mydatabase.* TO 'jeffrey'@'localhost';
Но затем AWS отказался войти в систему для этого пользователя. И я попытался изменить привилегии администратора, но не успешно. И я изменяю "localhost" на "%" через MySQL верстак. (или вы можете удалить пользователя и воссоздать) как:
CREATE USER 'jeffrey'@'%' IDENTIFIED BY 'somepassword';
GRANT SELECT ON mydatabase.* TO 'jeffrey'@'%';
Только тогда я смог войти через этого нового пользователя.
Кроме того: Как только вы сделали это изменение, ваша база данных может подключаться с любого ip. Если вам нужно повысить безопасность и ограничить доступ к ip (например, если это промежуточная база данных), вы можете установить bind-адрес в файле my.cnf на вашем сервере.
bind-address = your.ip.add.ress
Ответ 4
У меня был наибольший успех с использованием MySQL Workbench и выполнения необработанного SQL для RDS:
CREATE USER 'foo'@'localhost' IDENTIFIED BY 'password';
Большей проблемой были разрешения. Сначала я попробовал:
Grant ALL on *.* to 'foo'@'localhost'
..., что приводит к ошибке Access Denied.
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';
Ответ 5
Я использовал workbench mySQL, и он отлично работает. просто перейдите к управлению /Users and Privileges, нажмите кнопку "Добавить учетную запись" внизу слева и настройте. Вы не можете давать привилегии SUPER, но большинство остальных