pymysql.err.OperationalError:(1045,"访问被拒绝用户' MYID' @' localhost'(使用密码:否)")

时间:2018-04-16 15:18:17

标签: python mysql sql flask webserver

我在服务器A上运行烧瓶Web服务器,我需要访问远程服务器B中的SQL数据库。

我收到此错误。

pymysql.err.OperationalError:(1045,"访问被拒绝用户' MYID' @' localhost'(使用密码:否)" )

有人能帮帮我吗?

以下是我的代码:

from flask import Flask, render_template, request
from flask.ext.mysql import MySQL

app = Flask(__name__)

app.config['MYSQL_HOST']='IP OF SERVER B'
app.config['MYSQL_PORT']='SERVER B PORT NUMBER'
app.config['MYSQL_USER']='MYID'
app.config['MYSQL_PASSWORD']='MYPW'
app.config['MYSQL_DB']='DBNAME'
mysql=MySQL(app)
mysql.init_app(app)
@app.route('/')
def index():
    cur = mysql.get_db().cursor()
    cur.execute('''SQLQUERY;''')
    rv=cur.fetchall()
    return str(rv)

2 个答案:

答案 0 :(得分:0)

使用mysql客户端或控制台,您应该执行以下操作:

grant all privileges on DBNAME.* to MYID@localhost identified by 'MYPW';

使用具有授予权限的用户(通常为root)。

当然,您可以缩小您授予的权限范围:all privileges让我们说:select,insert,update,delete,视具体情况而定。

要使用root访问控制台,请打开终端窗口并写入:

mysql -uroot -p

并提供密码或无密码root:

mysql -uroot

如果您不知道root密码,请按照以下指南操作:https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

如果您所在的公司/大学工作站没有执行上述操作的权限,请要求管理员授予权限。

答案 1 :(得分:0)

尝试更改您的

app.config['MYSQL_HOST'] = ...

app.config['MYSQL_DATABASE_HOST'] = ...

这也适用于其余部分:

MYSQL_DATABASE_HOST default is ‘localhost’
MYSQL_DATABASE_PORT default is 3306
MYSQL_DATABASE_USER default is None
MYSQL_DATABASE_PASSWORD default is None
MYSQL_DATABASE_DB   default is None
MYSQL_DATABASE_CHARSET  default is ‘utf-8’

我有同样的问题,但这为我解决了。希望这对您也有帮助。 查看Flask MySQL参考here