appengine не может подключиться к Google Cloud sql с пользователем без ROOT

Я создал пользователя в Google Cloud SQL. Когда я использую сторонний инструмент администрирования mysql, я могу подключиться, используя некорневую учетную запись. Однако в моей учетной записи движка приложения я не могу этого сделать. я не знаю почему. Я пробовал следующие строки подключения:

db = MySQLdb.connect(unix_socket='/cloudsql/' + SQL_INSTANCE, user='username', db='dbname')
db = MySQLdb.connect(host='x.x.x.x', port=3306, user='username', passwd="passwd")

Ничего из этого не работает.


person user2773013    schedule 02.03.2014    source источник
comment
Какая у вас ошибка? Можете ли вы также проверить, что с помощью «ПОКАЗАТЬ ГРАНТЫ ДЛЯ username @ localhost», чтобы убедиться, что разрешения верны.   -  person Razvan Musaloiu-E.    schedule 02.03.2014
comment
из движка приложения я получаю: super(Connection, self).__init__(*args, **kwargs2) OperationalError: (1044, "Access denied for user 'mtogether'@'localhost' to database '*******'") команда show grants сообщает GRANT USAGE ON *.* TO 'user'@'localhost' IDENTIFIED BY PASSWORD '*----------------'   -  person user2773013    schedule 02.03.2014


Ответы (1)


SHOW GRANTS должен указывать на то, что ваш пользователь имеет доступ к этой таблице. Разрешения USAGE недостаточно для использования конкретной базы данных.

Мне удалось правильно подключиться, используя определенного пользователя и пароль. MySQLdb.connect, который я использовал, был таким:

  db = MySQLdb.connect(
      unix_socket='/cloudsql/XXXXXXX',
      user='test', passwd='test')

Я добавил пользователя вот так:

mysql> GRANT ALL ON `%`.* TO test@localhost IDENTIFIED BY 'test';
Query OK, 0 rows affected (0.19 sec)

Как выглядят гранты:

mysql> SHOW GRANTS FOR test@localhost;
+-------------------------------------------------------------------------------------------------------------+
| Grants for test@localhost                                                                                   |
+-------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test'@'localhost' IDENTIFIED BY PASSWORD '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' |
| GRANT ALL PRIVILEGES ON `%`.* TO 'test'@'localhost'                                                         |
+-------------------------------------------------------------------------------------------------------------+
2 rows in set (0.11 sec)

mysql>

Надеюсь, это поможет.

person Razvan Musaloiu-E.    schedule 03.03.2014