Не удается заставить соединитель Python3 - MySQLdb работать в 16.04

0

У меня возникли проблемы с правильной работой python3-mysql-коннектора в Ubuntu 16.04.

import MySQLdb as mdb
db_host = 'localhost'
db_user = 'sec_user'
db_pass = 'zygf'
db_name = 'securities_master'
con = mdb.connect(host=db_host,user=db_user, passwd=db_pass, db=db_name)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/tom/SAT/env/lib/python3.5/site-packages/MySQLdb/__init__.py", line 86, in Connect
return Connection(*args, **kwargs)


File "/home/tom/SAT/env/lib/python3.5/site-packages/MySQLdb/connections.py", line 204, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (1045, "Access denied for user 'sec_user'@'localhost' (using password: YES)")

У этой главы есть (кто явно следит за тем же учебным пособием, что и я). Он смог решить свою проблему, убедившись, что его пользователь имеет доступ к правильной базе данных.

https://asyoulook.com/computers%20&%20internet/connecting-python-to-mysql-obtaining-sandamp-p500-symbols/603229

для настройки моего пользователя я использовал:

mysql> CREATE DATABASE securities_master;
mysql> USE securities_master;

mysql> CREATE USER sec_user@localhost IDENTIFIED BY password;
mysql> GRANT ALL PRIVILEGES ON securities_master.* TO sec_user@localhost;
mysql> FLUSH PRIVILEGES;

который, я считаю, верен, но я все еще получаю ту же ошибку?

Теги:
python-3.x
mysql-python

1 ответ

1
Лучший ответ

Bro вы правильно создаете пользователя, проблема заключается в том, что вы указываете sec_user в своем коде один пароль:

db_pass = 'zygf'

и когда вы создаете пользователя, вы устанавливаете другой пароль для sec_user:

mysql> СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ sec_user @localhost ИДЕНТИФИЦИРОВАНО по паролю;

Таким образом, соединение никогда не будет выполнено. Вам нужны оба (у db_pass и sql есть один и тот же пароль). Поэтому я исправлю это, изменив пароль sql на тот, который у вас есть на вашем коде python (zygf).

Сначала: удалить sec_user. Использовать этот:

DROP USER 'sec_user'@'localhost';

Во-вторых: снова создайте sec_user с помощью этого (фиксированный пароль):

mysql> CREATE USER sec_user@localhost IDENTIFIED BY zygf;
mysql> GRANT ALL PRIVILEGES ON securities_master.* TO sec_user@localhost;
mysql> FLUSH PRIVILEGES;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню