【问题标题】:pymysql.err.OperationalError: (1045, "Access denied for user 'MYID'@'localhost' (using password: NO)")pymysql.err.OperationalError: (1045, "Access denied for user 'MYID'@'localhost' (using password: NO)")
【发布时间】:2018-04-16 15:18:17
【问题描述】:

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

我收到此错误。

pymysql.err.OperationalError: (1045, "Access denied for user 'MYID'@'localhost' (using password: NO)")

有人可以帮帮我吗?

下面是我的代码:

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)

【问题讨论】:

  • 您是否授予用户MYID 架构DBNAME 的权限?
  • 感谢您的评论!!这是我应该做的吗? mysql > GRANT ALL PRIVILEGES ON DBNAME.* TO 'MYID'@'localhost'
  • 是的,使用具有授予权限的帐户,请参阅下面的答案

标签: python mysql sql flask webserver


【解决方案1】:

使用 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

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

【讨论】:

  • 感谢您的帮助!当我尝试这个时,grant all privileges on DBNAME.* to MYID@localhost identified by 'MYPW'; 我收到以下错误 ERROR 1044 (42000): Access denied for user 'MYID'@'%' to database 'DBNAME' 这可能是由于管理员设置造成的吗?
  • 你用root来执行这个吗?
  • no.. 我没有 root 访问权限。不然不行吗?
  • 没有,但是由于是本地安装,所以在mysql上拥有root权限并不难。
  • 只有管理员(在团队中)有 root 访问权限.. :( 所以我不知道以下登录的密码 mysql -uroot -p 。在这种情况下,我应该联系管理员用户权限? 非常感谢;D
【解决方案2】:

尝试改变你的

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

【讨论】:

    猜你喜欢
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 2021-09-08
    • 2018-08-17
    • 2016-09-28
    • 2012-04-28
    • 1970-01-01
    相关资源
    最近更新 更多