1
laoyuan OP 代码对比:
cnx = mysql.connector.connect(user='root', password='pass', host='localhost', port='3306', database='db') $con = mysql_connect('localhost:3306', 'root', 'pass'); |
2
laoyuan OP 伤心,还是走sock吧
|
3
laoyuan OP 看来我对sock的理解有问题,貌似就是sock路径的问题!
|
4
cheng007 2015-04-13 09:23:03 +08:00
python代码你写了database="db",你有在mysql创建这个db吗?
|
6
laoyuan OP |
7
oott123 2015-04-13 11:27:13 +08:00 via Android
试试换成 127.0.0.1 ?
:) 好吧我承认这是一种玄学… |
9
fxxkgw 2015-04-13 17:03:01 +08:00
import MySQLdb
conn = MySQLdb.connect() 换MySQLdb试试 |
10
zsx 2015-04-13 18:10:15 +08:00 1
|
11
oott123 2015-04-13 18:13:21 +08:00 1
@zsx MySQL 的话,如果在 UNIX 下用 localhost ,经常会用 socks 方式连接。具体的机制我也不知道叫什么。
在所有系统上,如果你的 DNS 配置有问题,对 localhost 解析不正确的话、或者解析到 IPv6 而你的 MySQL 并未监听 IPv6 的情况下也可能遇到问题。 而 MySQL 的权限机制里,除了用户名、密码之外,还有主机头;如果你配置的用户是 username @ 127.0.0.1 的,那么也有可能遇到连接不上的问题…… 玄学就是懒得解释嘛 :) |
12
zsx 2015-04-13 18:19:53 +08:00
@oott123 前次用PMA创建了一个数据库然后新建了用户并分配了给这个库的所有权限结果就是Access Denied,看了主机头之类全部没问题;最后的解决方案是删除用户,然后新建用户后再创建数据库(啊玄学太可怕了
|
13
laoyuan OP |
14
laoyuan OP 果然,指定mysql.sock 位置后mysql-connector-python 也连通了
cnx = mysql.connector.connect(user='root', password='pass', host='localhost', port='3306', unix_socket='/private/tmp/mysql.sock', database='db') |