Мне нужно создать нового пользователя MySQL с ограниченными правами на существующем экземпляре Amazon RDS. Получив пару сообщений об ошибках, я вроде как смог сделать это с помощью официального инструмента администратора MySQL, и теперь пользователь появляется в списке. Однако я не могу назначить какие-либо привилегии схемы, так как все пользователи выделены серым цветом. Я вошел в систему как «главный пользователь», созданный при запуске экземпляра. Не уверен, куда идти дальше. У меня установлены инструменты командной строки RDS, но я тоже не смог ничего отследить. Идеи
Создание нового пользователя MySQL в среде Amazon RDS
Ответы (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
Я знаю, что этой теме уже несколько лет, и я продолжаю ее находить, поэтому я хотел получить последнюю информацию о AWS RDS и разрешениях пользователей.
Вы не можете использовать GRANT ALL
для любого пользователя с RDS. Когда вы используете оператор GRANT ALL
, вы также пытаетесь предоставить Global
(как AWS называет их Super Permissions
), и с учетом того, как настроена система AWS RDS, они не позволяют назначать глобальные параметры пользователям.
Вы должны разбить Разрешения на следующее:
GRANT SELECT,INSERT,UPDATE,DELETE,DROP on
Это позволит вашему пользователю подключиться к RDS после того, как настройки безопасности будут настроены, чтобы разрешить доступ из ваших экземпляров EC2 или из Интернета.
Надеюсь, эта информация поможет всем, кто сталкивается с теми же проблемами, что и я, с системами AWS RDS.
Вальдо
GRANT ALL
я все еще не могу подключиться. Теперь понятно.
- person Alex G.P.; 08.06.2017
ALL
: ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)
- person crollywood; 12.07.2017
GRANT ALL
, если были выбраны все привилегии. Добавление привилегий в два шага, чтобы оно не использовалось GRANT ALL
, позволило мне обойти ошибку отказа в разрешении при попытке добавить привилегии, и лишь слегка раздражает необходимость делать это в два шага.
- person Carson Evans; 13.03.2018
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
Наибольшего успеха я добился, используя 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';
GRANT USAGE ON *.* TO 'foo'@'localhost'
протестировано на rds mariadb, думаю, mysql должен быть таким же. см. MySQL в Amazon RDS
- person Leonmax; 20.07.2017
Я использовал рабочую среду mySQL, и она отлично работает. просто зайдите в Управление / Пользователи и привилегии, нажмите кнопку «Добавить учетную запись» внизу слева и настройте. Вы не можете дать СУПЕР привилегии, но большинство остальных