Dan*_*010 8 python mysql mysql-python
我有一个类似的python代码
import MySQLdb
import sys
try:
con = MySQLdb.connect(host = 'localhost',user = 'crawler',passwd = 'crawler', db = 'real_estate_analytics')
#... rest of code ...
except MySQLdb.Error, e:
print "Error %d: %s" % (e.args[0],e.args[1])
sys.exit(1)
Run Code Online (Sandbox Code Playgroud)
问题是我收到以下错误:
Error 1045: Access denied for user 'crawler'@'localhost' (using password: YES)
如果我在终端上的mysql mysql -u crawler -pcrawler我可以访问数据库没有问题.
mysql> show databases;
+-----------------------+
| Database |
+-----------------------+
| information_schema |
| AL |
| cloversoup |
| codebar |
| mysql |
| performance_schema |
| real_estate_analytics |
| teste |
+-----------------------+
8 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
我还删除了匿名用户以避免冲突.我的用户是
mysql> select user,host from mysql.user;
+---------+-----------+
| user | host |
+---------+-----------+
| root | % |
| crawler | localhost |
| root | localhost |
+---------+-----------+
3 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
我已经给予爬虫(和刷新的权限)所有授权,所以这不应该是问题:
GRANT ALL PRIVILEGES ON *.* TO crawler@localhost IDENTIFIED BY 'crawler' WITH GRANT OPTION;
FLUSH PRIVILEGES;
事实上:
mysql> show grants;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for crawler@localhost |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'crawler'@'localhost' IDENTIFIED BY PASSWORD '*A594DECC46D378FDA13D7843740CBF4985E6969B' WITH GRANT OPTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用root用户进行连接
con = MySQLdb.connect(host = 'localhost',user = 'root',passwd = 'my_root_password', db = 'real_estate_analytics')
但它也不起作用(相同的错误).
这件事让我抓狂.有没有人能够了解问题所在?
OBS:我知道在SO上有类似的问题,但是我已经全部阅读了它们并没有解决我的问题.这就是我在这里发布的原因
'localhost' 对MySQL来说一直很特别.在您的情况下,您授予crawler @ localhost一些权限,这将意味着"通过UNIX套接字连接的用户爬网程序".而且,我很确定MySQL服务器配置了--skip-networking.
这可以通过明确来解决.使用数据库驱动程序的unix_socket连接参数,它将强制使用UNIX套接字.(无耻地链接到MySQL Connector/Python文档,因为我是该驱动程序的维护者).
| 归档时间: |
|
| 查看次数: |
12278 次 |
| 最近记录: |