我正在尝试将 python 与 MySQL 连接,但出现此错误:
OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: NO)")
我试图解决它 6 个小时,但我失败了。谁能帮帮我吗 ?
我正在尝试将 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 记录不完全相同,
但这是相同的错误,并且很可能意味着在您的情况下,密码参数根本没有进入 mysql。
当我输入错误的密码时,我在命令行上得到一个非常不同的错误:
$ mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
你没有指定你的root密码。如果您从远程计算机访问 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 命令行。
如果您在执行此操作时在密码列前面没有看到任何值
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()
我收到此错误是因为我的配置文件中有引号。
[mysql]
username: 'uuuu'
password: 'pppp'
host: 'localhost'
database: 'dddd'
本来应该
[mysql]
username: uuuu
password: pppp
host: localhost
database: dddd