所以我是C ++ / Mysql的新手,如果我问一些愚蠢的话,我很抱歉。
我遇到了从c ++连接mysql的错误
SQLException: Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)
我为此问题阅读了许多现有解决方案,他们似乎建议使用一些更新的设置重新启动服务器。但是,我正在尝试连接到远程服务器,并且我没有对该服务器的root访问权。
以下是我的服务器,客户端和连接器的更多详细信息:
我想一个简单的解决方法是从连接器中禁用“secure_auth”。但是,我不知道该怎么做。我可以从我的C ++代码中传递一些参数吗?
那么有人有什么建议吗?谢谢!
答案 0 :(得分:1)
我遇到了同样的问题,并使用Connector/C++ Connection Options解决了这个问题。
sql::Driver *driver;
sql::Connection *con
driver = get_driver_instance();
sql::ConnectOptionsMap connectionProperties;
connectionProperties["hostName"] = sql::SQLString("tcp://192.168.0.10:3306");
connectionProperties["userName"] = sql::SQLString("root");
connectionProperties["password"] = sql::SQLString("password");
connectionProperties["useLegacyAuth"] = true;
con = driver->connect(connectionProperties);
确保您拥有connectionProperties["useLegacyAuth"] = true;
并且对我有用。
答案 1 :(得分:0)
Pre 4.1.1是指您尝试进行身份验证的密码。如果您无法更改它以使用更现代(更长)的方案,您可以尝试
如果您可以使用.cnf文件进行连接,则选项2和3很容易。