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

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


person Dan    schedule 17.04.2012    source источник


Ответы (5)


Лучше всего, вероятно, подключиться к базе данных с помощью клиента командной строки 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, где бы он ни был.

Полезные документы

Документация по группам безопасности 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

person andebauchery    schedule 09.05.2012
comment
Просто вопрос. Поскольку хостом является YOURRDSENDPOINT.rds.amazonaws.com, предоставление привилегий localhost работает? Я долго безуспешно пытался это сделать - person ; 20.02.2014
comment
Это было предоставлено только в качестве примера, я обновлю ответ, чтобы использовать подстановочное имя хоста. - person andebauchery; 20.02.2014
comment
Вот полный список привилегий предоставления, из которых вы можете выбрать для RDS: aws.amazon.com/premiumsupport/knowledge-center/ GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES , EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON . TO 'new_master_user' @ '%' С ОПЦИЕЙ GRANT; - person enharmonic; 29.08.2019

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

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

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

GRANT SELECT,INSERT,UPDATE,DELETE,DROP on

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

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

Вальдо

person Waldo    schedule 11.05.2016
comment
Меня это тоже спасает. Я был полностью разочарован, почему после GRANT ALL я все еще не могу подключиться. Теперь понятно. - person Alex G.P.; 08.06.2017
comment
Хорошая точка зрения! Ошибка для ALL: ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES) - person crollywood; 12.07.2017
comment
Для RDS максимальные привилегии, которые вы можете добавить для пользователя в базе данных, - это SELECT, ALTER, UPDATE, INSERT, CREATE, DELETE, DROP, INDEX, REFERENCES. - person Charlesthk; 30.10.2017
comment
Я использовал графический интерфейс, который автоматически использовал GRANT ALL, если были выбраны все привилегии. Добавление привилегий в два шага, чтобы оно не использовалось GRANT ALL, позволило мне обойти ошибку отказа в разрешении при попытке добавить привилегии, и лишь слегка раздражает необходимость делать это в два шага. - person Carson Evans; 13.03.2018
comment
Вы можете запустить в RDS следующую инструкцию: GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'user'@'%' WITH GRANT OPTION; - person teraflik; 05.02.2021

Я создал вот так:

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

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

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

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

Вдобавок: как только вы сделаете это изменение, ваша база данных сможет подключаться с любого IP-адреса. Если вам нужно повысить безопасность и ограничить доступ к ip (например, если это промежуточная база данных), вы можете установить адрес привязки в файле my.cnf на своем сервере.

привязка-адрес = ваш.ip.add.ress

введите здесь описание ссылки

person Sadee    schedule 20.02.2017
comment
пробовали многие из вышеперечисленных решений. Что сработало для меня, так это удалить пользователя, с которым я возился, и выполнить следующие действия. Сработало хорошо. - person baku; 07.11.2019

Наибольшего успеха я добился, используя 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';
person Chris M.    schedule 12.04.2013
comment
если вы предоставите ВСЕ для вашей базы данных. * 'foo' @ 'localhost', вы можете добиться большего успеха. * будет включать системные базы данных (схемы). - person Mike; 18.07.2013
comment
GRANT USAGE ON *.* TO 'foo'@'localhost' протестировано на rds mariadb, думаю, mysql должен быть таким же. см. MySQL в Amazon RDS - person Leonmax; 20.07.2017

Я использовал рабочую среду mySQL, и она отлично работает. просто зайдите в Управление / Пользователи и привилегии, нажмите кнопку «Добавить учетную запись» внизу слева и настройте. Вы не можете дать СУПЕР привилегии, но большинство остальных

person ac1965    schedule 11.07.2014