MySql Python连接

| 我正在尝试将python与MySQL连接,但出现此错误:
OperationalError: (1045, \"Access denied for user \'root\'@\'localhost\' (using password: NO)\")
我试图解决6个小时,但失败了。谁能帮帮我吗 ?     
已邀请:
这意味着您忘记了密码参数,该参数在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记录不完全相同, 但这是相同的错误,很可能意味着在您的情况下,password参数根本没有使它适用于mysql。 当我输入错误的密码时,在命令行上会出现一个非常不同的错误:
$ mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user \'root\'@\'localhost\' (using password: YES)
    
您没有指定根密码。 如果要从远程计算机访问mysql,则默认情况下,root用户仅限于localhost连接。尝试运行此命令以从任何地方启用访问:
GRANT ALL PRIVILEGES ON *.* TO root@\'%\' IDENTIFIED BY \"YOUR_ROOT_PASSWORD\";
FLUSH PRIVILEGES;
还要检查您的防火墙设置。     
import MySQLdb

cxn = MySQLdb.connect(host = \'localhost\',user = \'root\',passwd = \'password\', db = \'yourdatabase\')
因此,您需要知道密码是什么,并且需要使用以下方法创建数据库:
CREATE DATABASE yourdatabase;
从mysql命令行如上所述。     
我收到此错误是因为我的配置文件中带有引号。
[mysql]
username: \'uuuu\'
password: \'pppp\'
host: \'localhost\'
database: \'dddd\'
本来应该
[mysql]
username: uuuu
password: pppp
host: localhost
database: dddd
    
如果您在执行操作时未在密码列前面看到任何值
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()
    

要回复问题请先登录注册