使用C++访问XAMPP中MariaDB的认证插件问题
已安装XAMPP并创建MariaDB数据库,PHP文件访问正常,但C++程序访问时出现错误:
Authentication plugin 'mysql_native_password' cannot be loaded. The specified module cannot be found.
尝试创建使用mysql_old_password认证的新用户仍报错,XAMPP未附带认证插件,创建空插件文件夹无效;尝试改为caching_sha2_password失败,服务器仅支持mysql_native_password和mysql_shared_password且相关插件已不被支持。请问能否通过C++实现该数据库的访问?
可以用C++访问,问题核心是客户端库与服务器认证插件的兼容性及插件路径配置问题,以下是具体解决步骤:
1. 替换为MariaDB官方C++连接器
不要使用MySQL的客户端库,改用MariaDB Connector/C++——它是专为MariaDB开发的客户端库,默认兼容mysql_native_password认证,无需额外寻找插件文件。
2. 显式配置插件路径(若仍报错)
如果连接器仍提示找不到插件,可在代码中直接指定XAMPP MariaDB的插件目录:
#include <mysql_driver.h> #include <mysql_connection.h> int main() { sql::mysql::MySQL_Driver *driver; sql::Connection *con; driver = sql::mysql::get_mysql_driver_instance(); // 替换为你的XAMPP MariaDB插件实际路径,比如Windows下为C:/xampp/mysql/lib/plugin driver->setOption("MYSQL_PLUGIN_DIR", "你的插件路径"); con = driver->connect("tcp://127.0.0.1:3306", "cpp_user", "你的密码"); // 后续数据库操作... delete con; return 0; }
3. 创建匹配认证方式的数据库用户
在MariaDB控制台执行以下命令,创建使用mysql_native_password认证的用户并赋予权限:
CREATE USER 'cpp_user'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; GRANT ALL PRIVILEGES ON 你的数据库名.* TO 'cpp_user'@'localhost'; FLUSH PRIVILEGES;
之后在C++代码中使用该用户连接数据库。
4. 确认XAMPP MariaDB配置
打开XAMPP的mysql/my.ini(或my.cnf),确认未禁用mysql_native_password插件——默认情况下XAMPP的MariaDB已内置该插件,无需额外配置加载项。
内容的提问来源于stack exchange,提问作者Eric K

