MySQL访问问题:Perl脚本无法连接RBPmap数据库求助
问题排查:MySQL授权失败导致Perl脚本数据库连接错误
错误信息
DBI connect('RBPmap:localhost:3306;mysql_read_default_file=/home/mauricio1908/RBPmap/.my.cnf','mauricio1908',...) failed: Access denied for user 'mauricio1908'@'localhost' to database 'RBPmap' at /home/mauricio1908/RBPmap/SQL_RBPMAP.pm line 55. Motifs selection: SQL_RBPMAP::db: cannot connect to database RBPmap Access denied for user 'mauricio1908'@'localhost' to database 'RBPmap'
你执行的错误授权语句
GRANT ALL PRIVILEGES ON SQL_RBPMAP.pm TO 'user'@'localhost';
问题原因及解决办法
- 授权用户不匹配:脚本里使用的数据库用户是
mauricio1908,但你给user@localhost授权,完全是两个不同的用户,这根本解决不了当前用户的权限问题。 - 授权对象错误:MySQL的授权语法中,
ON后面需要指定数据库.表(比如RBPmap.*表示RBPmap库下的所有表),而你写的SQL_RBPMAP.pm是Perl模块文件,不是MySQL的数据库/表对象,这会导致授权语句无效。 - 未刷新权限:即使授权语句正确,部分情况下需要执行
FLUSH PRIVILEGES;让MySQL加载新的权限配置。 - .my.cnf文件冲突:检查你的
.my.cnf文件,确保里面配置的用户名是mauricio1908,密码正确,没有覆盖连接参数的错误设置。
正确的操作步骤
- 登录MySQL服务器,执行正确的授权语句:
GRANT ALL PRIVILEGES ON RBPmap.* TO 'mauricio1908'@'localhost'; FLUSH PRIVILEGES;
- 验证权限是否生效:
SHOW GRANTS FOR 'mauricio1908'@'localhost';
查看输出结果中是否包含GRANT ALL PRIVILEGES ON RBPmap.* TO mauricio1908@localhost``的条目。
3. 重新运行Perl脚本,检查连接是否正常。
内容的提问来源于stack exchange,提问作者Mauricio Oliveira
相关产品推荐
相关产品推荐

