【问题标题】:Flask SQLAlchemy Operational Error Access Denied for UserFlask SQLAlchemy 操作错误拒绝用户访问
【发布时间】:2013-08-08 03:14:53
【问题描述】:

无法连接到数据库。

用户名和密码正确。我尝试了几种组合。我已经使用'mysql://user:pass@localhost:8889/db-name' 验证了我的SQLALCHEMY_DATABASE_URI,但无法连接。我可以使用 mysql 命令行实用程序毫无问题地连接。我什至尝试使用没有密码的用户名。

Flask 应用详情 - config.py

import os
basedir = os.path.abspath(os.path.dirname(__file__))

CSRF_ENABLED = True

SQLALCHEMY_DATABASE_URI = 'mysql://datadmin:password@localhost:8889/db-name'
WHOOSH_BASE = os.path.join(basedir, 'whoosh')

_初始化_.py

import os
from flask import Flask, render_template, jsonify, request
from flask.ext.sqlalchemy import SQLAlchemy
from config import basedir

app=Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)

from app import views, models

堆栈跟踪

File ".../site-packages/MySQLdb/connections.py", line 187, in __init__
super(Connection, self).__init__(*args, **kwargs2)
OperationalError: (OperationalError) (1045, "Access denied for user 'datadmin'@'localhost' (using password: YES)") None None

通过命令行连接

user@hostname:~$ mysql -u datadmin -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.29 Source distribution

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

任何人有任何提示或知道如何找出问题所在?

【问题讨论】:

  • 没有足够的细节。请添加错误的完整堆栈跟踪,并提供一个会话副本,该副本显示您用于从mysql 访问的命令行参数。当然,您可以用假密码替换真实密码。
  • 检查 mysql 是否正在运行。您使用的是什么操作系统?错误信息是什么?请添加更多信息以便我们为您提供帮助
  • OSX 10.7.5 上的 MAMP。 MySQL 正在运行,因为我可以同时连接 mysql 命令行实用程序以及访问 phpmyadmin。
  • 我添加了更多细节。如果您需要其他帮助,请告诉我,感谢您的帮助!
  • @frankV u,先生。这条线:WHOOSH_BASE = os.path.join(basedir, 'whoosh')救了我的命。万一有人在读这个。我有这个错误,其中一个查询会去:SELECT (...) FROM (...) WHERE null 我指定了WHOOSH_BASE,就像你做的那样,瞧,我的文本搜索又可以工作了。用我永恒的灵魂之爱感谢你。

标签: mysql sqlalchemy flask flask-sqlalchemy


【解决方案1】:

在您的 Flask 应用上,您通过端口 8889 进行连接。

然而,在 mysql 命令行上,您似乎正在使用默认选项,在股票 mysql 构建中,该选项将连接到端口 3306。

你能在这两个端口上运行两个mysql服务器,每个都有不同的用户权限吗?

【讨论】:

  • 不,我只安装了 MAMP。命令行看起来像默认选项,因为我将 MAMP 的 cli 符号链接到 /usr/local/bin/ 但肯定只安装了一个 MySQL 服务器。此外,错误与连接无关,它是用户访问错误。
  • 我知道,这就是为什么我问你是否可以同时运行两台服务器,并不是说你去错了端口。
猜你喜欢
  • 2017-10-31
  • 2021-10-07
  • 1970-01-01
  • 1970-01-01
  • 2017-01-03
  • 1970-01-01
  • 2019-07-16
  • 2017-11-11
  • 1970-01-01
相关资源
最近更新 更多