Python连接MySQL无输出:能连服务器却无法列出数据库?
以下是针对你的场景(Python 3.11、MySQL 8.0.15、Windows系统)的排查方向:
用户权限不足
MySQL的SHOW DATABASES操作需要账号拥有全局SHOW DATABASES权限,或者至少拥有某个数据库的访问权限。即使是root账号,也可能因权限被修改而无法查看全量数据库。
验证方式:打开MySQL命令行工具,用相同的root账号密码登录,执行SHOW DATABASES;。如果命令行也无法显示数据库,说明权限存在问题,可执行以下命令赋权:GRANT SHOW DATABASES ON *.* TO 'root'@'localhost'; FLUSH PRIVILEGES;MySQL配置限制
若MySQL配置文件(Windows下为my.ini)中开启了skip-show-database参数,会限制用户仅能查看自己拥有权限的数据库;如果账号没有任何数据库的访问权限,就会返回空结果。
排查方式:找到my.ini文件(通常在MySQL安装目录或data子目录下),搜索skip-show-database,若存在则注释掉该行,然后重启MySQL服务。驱动版本兼容性问题
Python 3.11属于较新版本,若你的mysql-connector-python版本过旧,可能存在兼容性问题,导致无法正确获取查询结果。
解决方式:执行以下命令升级驱动:pip install --upgrade mysql-connector-python系统数据库被异常删除(极低概率)
MySQL默认自带information_schema、mysql、performance_schema等系统数据库,若这些库被误删,会导致SHOW DATABASES无结果。这种情况需重新初始化MySQL或恢复备份。
内容的提问来源于stack exchange,提问作者Samet DURAN

