用户的mysql访问被拒绝root@localhost(使用密码:否)尽管设置了密码并在连接uri中输入了密码
我正在尝试在Flask应用程序中使用pymysql和Flask sqlalchemy配置mysql数据库用户的mysql访问被拒绝root@localhost(使用密码:否)尽管设置了密码并在连接uri中输入了密码,mysql,flask,sqlalchemy,flask-sqlalchemy,pymysql,Mysql,Flask,Sqlalchemy,Flask Sqlalchemy,Pymysql,我正在尝试在Flask应用程序中使用pymysql和Flask sqlalchemy配置mysql数据库 db = SQLAlchemy() app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:password@localhost:3306/ftm' db.init_app(app) 但是,当我运行我的应用程序时,我会得到: OperationalError: (pymysql.err.OperationalError)
db = SQLAlchemy()
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:password@localhost:3306/ftm'
db.init_app(app)
但是,当我运行我的应用程序时,我会得到:
OperationalError: (pymysql.err.OperationalError) (1045, u"Access denied for user 'root'@'localhost' (using password: NO)")
我尝试重置密码,并验证它是否有效:从命令行,我可以通过以下方式进入mysql:
mysql -u root -p
然后在提示下输入我的密码。有没有人能理解为什么mysql似乎认为我试图在没有密码的情况下连接,即使我在URI中有一个(有效的)密码
请注意,这与其他可能的重复问题不同,因为这些错误消息至少表明连接尝试附加了密码
编辑:没有特别的顺序,我已经:尝试了一个不同的用户,在db.init_app之前检查了连接字符串的状态,创建了一个不同的MySQL实例并尝试连接到它,从连接字符串中删除了pymysql,并尝试用pdb回溯它(没有用,因为我唯一识别为自己的方法调用是init_app())。我还浏览了互联网,发现没有提到任何人在尝试使用密码连接数据库时收到此错误消息。我能想到的唯一可能是从app.config传递到mysql时(当我调用db.init_app时)有人正在更改我的字符串以删除密码。有什么想法吗?如果没有人,我就只能用Postgre或其他什么了。好的,这里有几个潜在的问题。例如:
- 在这里:
通过'password123'更改用户'USER\u name'@'localhost'以mysql\u本地\u密码标识。
在op提供的示例中,您可以将用户名
替换为root
关于插件的更多信息:可能的重复密码是否包含任何特殊字符(字母和数字除外)?@jdigitalnot@paulsm4编辑以澄清为什么它不在db.init_应用程序之前,请打印出连接字符串,并确保发送的是您认为发送的内容。看起来很奇怪,mysql认为你没有发送密码。sqlalchemy有禁止通过连接字符串输入密码的选项吗?很好的建议,我已经把它缩小到了可能性#3(我想)。关于如何测试这个有什么想法吗?谢谢,这很有效。但你能解释一下这个命令的作用吗?@AnumSheraz,谢谢。我加了一些注释。