如何解决Cygwin下Perl无法访问MySQL 8.xx数据库的问题?
解决Cygwin Perl脚本连接MySQL 8.0的caching_sha2_password及DBD::MariaDB安装问题
方案一:修复DBD::MySQL以支持caching_sha2_password(无需回退密码格式)
问题根源是Cygwin下的DBD::MySQL依赖的客户端库找不到caching_sha2_password插件,可通过绑定WAMP自带的MySQL 8.0库解决:
- 找到WAMP中MySQL 8.0的安装路径,例如默认路径为
/cygdrive/c/wamp64/bin/mysql/mysql8.0.39 - 设置环境变量让Perl能加载WAMP的MySQL库:
export LD_LIBRARY_PATH="/cygdrive/c/wamp64/bin/mysql/mysql8.0.39/bin:$LD_LIBRARY_PATH" - 重新编译DBD::MySQL,指定WAMP的MySQL配置工具路径:
若编译时提示头文件缺失,补充指定头文件和库路径:cpanm DBD::MySQL --configure-args="--mysql-config=/cygdrive/c/wamp64/bin/mysql/mysql8.0.39/bin/mysql_config.exe"cpanm DBD::MySQL --configure-args="--mysql-include=/cygdrive/c/wamp64/bin/mysql/mysql8.0.39/include --mysql-lib=/cygdrive/c/wamp64/bin/mysql/mysql8.0.39/lib"
方案二:正确安装DBD::MariaDB
之前安装失败是因为缺少MariaDB开发依赖,按以下步骤操作:
- 打开Cygwin的
setup.exe,搜索并安装以下包:libmariadb-devel(MariaDB开发库)mariadb-client(MariaDB客户端)
- 安装完成后,通过CPAN安装DBD::MariaDB:
若仍提示找不到cpanm DBD::MariaDBmariadb_config,手动指定路径:cpanm DBD::MariaDB --configure-args="--mariadb-config=/usr/bin/mariadb_config"
方案三:ODBC连接替代方案(兼容性最强)
如果上述编译方案仍有问题,可改用Windows ODBC驱动绕开Cygwin客户端库限制:
- 在Windows系统安装MySQL ODBC 8.0 Unicode Driver
- 在Cygwin中安装DBD::ODBC:
cpanm DBD::ODBC - Perl脚本中使用ODBC连接字符串:
use DBI; my $dsn = 'dbi:ODBC:Driver={MySQL ODBC 8.0 Unicode Driver};Server=localhost;Database=你的数据库名;User=你的用户名;Password=你的密码;'; my $dbh = DBI->connect($dsn, '', '', { RaiseError => 1 });
内容的提问来源于stack exchange,提问作者Les Lewis
相关产品推荐
相关产品推荐

