Flask连接MySQL报1045 root访问拒绝,配置testuser不生效问题
问题根源
你报错的核心原因是使用了和当前MySQL扩展不匹配的配置项,导致配置完全未生效,扩展使用了默认的root用户、空密码发起连接。
解决步骤
- 第一步:修正配置参数名
你当前导入的是flask_mysqldb扩展,它的配置项不带_DATABASE后缀,把你的数据库配置替换为以下内容:
# 正确的flask-mysqldb配置项 app.config['MYSQL_USER'] = 'testuser1' app.config['MYSQL_PASSWORD'] = 'password123' app.config['MYSQL_DB'] = 'MyDB' app.config['MYSQL_HOST'] = 'localhost'
你之前使用的MYSQL_DATABASE_*格式是旧版flask-mysql扩展的配置,和你现在用的扩展完全不兼容,所以配置没有被读取到。
第二步:清理冗余导入
删掉代码里没用的import mysql.connector,避免多个MySQL连接库产生冲突。第三步:校验代码缩进和执行逻辑
确认所有app.config配置代码的缩进层级和app = Flask(__name__)、mysql.init_app(app)一致,没有被包裹在其他函数、条件判断块里,确保配置代码会被正常执行。
可以在mysql.init_app(app)前加一行打印代码校验配置是否加载成功:
print("当前加载的数据库用户:", app.config.get('MYSQL_USER'))
如果运行后输出的不是testuser1,说明配置代码本身没有被执行,检查代码逻辑即可。
- 第四步:确认数据库用户权限
登录MySQL命令行执行以下语句,确认testuser1有本地访问MyDB的权限:
-- 查看权限 SHOW GRANTS FOR 'testuser1'@'localhost'; -- 缺少权限的话执行授权 GRANT ALL PRIVILEGES ON MyDB.* TO 'testuser1'@'localhost'; FLUSH PRIVILEGES;
内容的提问来源于stack exchange,提问作者marsh1979
相关产品推荐
相关产品推荐

