linux下qt开发的mysql工具远程连接问题总结

76 阅读1分钟
若启动时数据库登录失败,但在数据库正常情况下(能使用MySQL workbench工具访问或能在终端登录使用)
则执行以下命令尝试:
ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock


提示没有libmysqlclient.so.18库,则如下:
sudo cp libmysqlclient.so.18 /usr/lib/x86_64-linux-gnu/


Failed to connect to database: Error: [2003][Can't connect to MySQL server on '192.168.100.82'
1.确保192.168.100.82目标机器上能登陆mysql
2.确保本地使用shell能登陆目标机器的mysql
3. 1能2不能则需要修改mysql的远程权限



mysql -h192.168.100.82 -uroot -p
程序“mysql”尚未安装。  您可以使用以下命令安装:
sudo apt-get install mysql-client-core-5.5


上一步client安装完成后(为1能2不能的场景):
mysql -h192.168.100.82 -uroot -p
Enter password: 
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.100.82' (111)  [目标机器或本地机器都是不能以此种方式100.82]


use mysql; select user, host from user; 
host为%表示所有终端都能登陆
update user set host='%' where user='root' and host='localhost';


再次登陆尝试出现:ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.100.82' (111)


原因:/etc/mysql/my.cnf中 bind-address屏蔽的,注视掉此bind-address,再service mysql restart 重启mysql服务器即可


还是不能导入, 将load infile 改为load local infile (参照:http://blog.csdn.net/brucelin_good/article/details/43704829)也许c函数接口连接mysql时可以加上某个local-infile参数。

在QT运行中测试通过,但单独打开编译后的程序会出现如下新问题:

新问题出现:

The used command is not allowed with this MySQL version  
解决方法:修改/etc/mysql/my.cnf,加上
[mysql]
local-infile

问题解决。

在代码中mysql连接的地方加上如下代码也能解决。
mysql_options(&m_handle, MYSQL_OPT_LOCAL_INFILE, "local-infile");