MySql Python Connect - PullRequest
       48

MySql Python Connect

3 голосов
/ 16 апреля 2011

Я пытаюсь соединить python с MySQL, но я получаю эту ошибку:

OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: NO)")

Я пытаюсь решить ее в течение 6 часов, и мне не удается.Кто-нибудь может мне помочь, пожалуйста ?

Ответы [ 5 ]

1 голос
/ 16 апреля 2011

это означает, что вы забыли параметр пароля, который в mysql не требуется.

из командной строки Unix:

$ mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
$ mysql -u root -p
Enter password: 
<typing password>
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 47
Server version: 5.1.37-1ubuntu5.5 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

не совсем то же самое, что логирование с python,

но это та же ошибка, и, скорее всего, это означает, что в вашем случае аргумент пароля вообще не дошел до mysql.

при вводе неверного пароля в командной строке появляется совсем другая ошибка:

$ mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
0 голосов
/ 22 ноября 2018

Если вы не видите никакого значения перед столбцом пароля, когда вы делаете

SELECT user, host, password FROM mysql.user;

в вашем mysql

В вашем скрипте python не указывайте пароль

например

import MySQLdb

db = MySQLdb.connect(host="localhost",    # your host, usually localhost
                     user="root",         # your username
                     passwd="",           # your password
                     db="dynamo",
                     port = 3306)         # name of the data base

# you must create a Cursor object. It will let
#  you execute all the queries you need
cur = db.cursor()

# Use all the SQL you like
cur.execute("select * from SomeTable limit 10")

# print all the first cell of all the rows
for row in cur.fetchall():
    print(row[0])

db.close()
0 голосов
/ 20 ноября 2016

Я получил эту ошибку, потому что в моем конфигурационном файле были кавычки.

[mysql]
username: 'uuuu'
password: 'pppp'
host: 'localhost'
database: 'dddd'

должно было быть

[mysql]
username: uuuu
password: pppp
host: localhost
database: dddd
0 голосов
/ 16 апреля 2011
import MySQLdb

cxn = MySQLdb.connect(host = 'localhost',user = 'root',passwd = 'password', db = 'yourdatabase')

Итак, вам нужно знать, какой у вас пароль, и вам нужно создать базу данных с:

CREATE DATABASE yourdatabase;

из командной строки mysql, как описано выше.

0 голосов
/ 16 апреля 2011

Вы не указали свой пароль root.Если вы обращаетесь к mysql с удаленного компьютера ... пользователь root по умолчанию ограничен только локальными соединениями.Попробуйте запустить это, чтобы разрешить доступ из любого места:

GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY "YOUR_ROOT_PASSWORD";
FLUSH PRIVILEGES;

Также проверьте настройки брандмауэра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...