Python无法连接到MySQL

时间:2016-11-25 05:39:43

标签: php python mysql

我试图连接到Linux服务器上的数据库,使用PHP一切正常:

$mysqli= new mysqli($_DBHOST, $_DBUSER, $_DBPASS, $_DB);

我也可以使用命令行连接:

mysql -u xxx -p

但是当我尝试使用pymysql连接Python时,我收到以下错误:

pymysql.err.InternalError: (1130, "Host 'xxx' is not allowed to connect to
this MariaDB server")

Python代码:

import pymysql
conn = pymysql.connect(host="xxx",user='xxx', passwd='xxx', db = 'xxx',
                                   ,port=3306, autocommit=True)

这怎么可能呢?它不能是一个权限问题,因为PHP可以很好地连接,或者可以吗?

3 个答案:

答案 0 :(得分:0)

试试这个

    try:
        import mysql.connector
        mysql_connector = mysql.connector
    except:
        import pymysql
        mysql_connector = pymysql

    mysql_connector.connect(user='root', password='root', host='xxx:3306', database='test')

答案 1 :(得分:0)

你能做的最好就是使用MySQLdb(区分大小写)它是最好的软件包。 然后你可以直接在pandas数据帧中导入你的表。

这很容易,但很难记住正确的拼写:

pip install MySQL-python

注意:运行上述命令时可能必须使用某些依赖项。关于如何在各种平台上安装这些的一些提示:

Ubuntu 14,Ubuntu 16,Debian 8.6(jessie)

sudo apt-get install python-pip python-dev libmysqlclient-dev

Fedora 24:

sudo dnf install python python-devel mysql-devel redhat-rpm-config gcc

使用MySQLdb

import MySQLdb
conn = MySQLdb.connect(host="xxx.xxx.xx.x", user="name", passwd="password", db="database_name")
cursor = db.cursor()
import pandas as pd

df = pd.read_sql("select * from your_table",conn)

答案 2 :(得分:0)

两个猜测:

  1. 运行mysqladmin variables | grep socket以获取套接字的位置,并尝试设置如下连接:

    pymysql.connect(db='base', user='root', passwd='pwd', unix_socket="/tmp/mysql.sock")
    
  2. 运行mysqladmin variables | grep port并验证端口是3306.如果没有,您可以手动设置端口,如下所示:

    pymysql.connect(db='base', user='root', passwd='pwd', host='localhost', port=XXXX)