Используя PyMySQL
, я получаю pymysql.err.OperationalError: (1045, u"Access denied for user 'my_user'@'<MY_IP_ADDRESS>' (using password: YES)")
, однако я могу войти в систему из командной строки или MySQL Workbench, используя те же учетные данные на этом компьютере. И я могу подключиться к localhost
с помощью PyMySQL. Вот мой пример тестового кода:
import pymysql
prod_conn = pymysql.connect(
host='correct-host-name.us-west-2.rds.amazonaws.com',
user='my_user',
password='correct_password',
port=3306,
database='my_db')
Однако, используя mysql -hcorrect-host-name.us-west-2.rds.amazonaws.com -umy_user -pcorrect_password -P3306 -Dmy_db
из командной строки на той же машине, я прекрасно вхожу.
Погуглив, я попытался проверить гранты для пользователя и полагаю, что пользователь настроен правильно. SHOW GRANTS FOR CURRENT_USER()
возвращается
Grants for my_user@%
'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 \'my_user\'@\'%\' WITH GRANT OPTION'
Я попытался проверить SELECT USER(), CURRENT_USER();
и вернуться
USER() CURRENT_USER()
'my_user@<MY_IP_ADDRESS>' 'my_user@%'
Итак, похоже, что пользователь настроен правильно, что я и подозревал, поскольку я могу подключиться через другие параметры. Я также попробовал оба предложения с https://forums.aws.amazon.com/thread.jspa?messageID=707103 (в частности, используя другую группу параметров с log_bin_trust_function_creators == 1
и используя пароль без знаков препинания) безрезультатно.
Я хочу использовать это в лямбда-функции, поэтому я действительно хочу использовать PyMySQL, чтобы сохранить это решение только для python, а не пытаться использовать MySQLDB или другую библиотеку.
Я не думаю, что есть какие-либо анонимные пользователи после просмотра SELECT user,host FROM mysql.user;
user host
'my_user' '%'
'mysql.sys' 'localhost'
'rdsadmin' 'localhost'
Ценю любые другие мысли, которые может иметь это сообщество о том, как действовать...
SHOW GRANTS FOR USER()
и сообщить? - person Brian Driscoll   schedule 06.10.2017SHOW GRANTS FOR USER();
является недопустимым утверждением (согласно MySQL Workbench).SHOW GRANTS FOR my_user;
дает тот же ответ, что иSHOW GRANTS FOR CURRENT_USER();
- person jcasner   schedule 06.10.2017(using password: YES)
). Если я не включу ниpasswd
, ниpassword
, ошибка будет(using password: NO)
. - person jcasner   schedule 06.10.2017