密码错误导致的sqlalchemy pymysql网站连接出错
Flask网站连接mariadb时提示:
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1045, "Access denied for user 'jack'@'master' (using password: YES)")
但是DBvisual连接正常:
查看用户发现jack在外部%访问时和从localhost时的密码不一样导致的,换个密码就对了。
Database changed
MariaDB [mysql]> select user,host,password from user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *7FB5824FA44505598280159F029E3520E34A0D43 |
| root | centos | *7FB5824FA44505598280159F029E3520E34A0D43 |
| root | 127.0.0.1 | *7FB5824FA44505598280159F029E3520E34A0D43 |
| root | ::1 | *7FB5824FA44505598280159F029E3520E34A0D43 |
| jack | % | *0A7E2C93A6ADFE3F4894F4DB8D67D41B0CF995DE |
| jack | localhost | *0A7E2C93A6ADFE3F4894F4DB8D67D41B0CF995DE |
+------+-----------+-------------------------------------------+
6 rows in set (0.001 sec)
MariaDB [mysql]>
MariaDB [mysql]> show grants for jack;
+-----------------------------------------------------------------------------------------------------+
| Grants for [email protected]% |
+-----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'jack'@'%' IDENTIFIED BY PASSWORD '*0A7E2C93A6ADFE3F4894F4DB8D67D41B0CF995DE' |
| GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON `mysql`.* TO 'jack'@'%' |
| GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON `xtdt`.* TO 'jack'@'%' |
+-----------------------------------------------------------------------------------------------------+
Sqlalchemy的url改一下密码就可以了
#修改jack:jackdb,jackdb是外部连接时的密码
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://jack:[email protected]:3306/xtdt?charset=utf8'