1.mysql的windows版本下载与安装
这里用的是8.1.0版本的.msi包进行下载和安装的,具体下载和安装流程参考:mysql(.msi)下载、安装及配置教程_下载mysql-installer-community-5.7.9.1.msi文件-CSDN博客
在安装过程中需要注意的是添加环境变量和调整数据的存储路径。
2.打开防火墙
在电脑设置搜索防火墙,然后打开windows defender 防火墙
打开高级设置
入站规则添加MySQL的默认端口3306
然后就可以调用linux的程序或者使用数据库工具进行连接了。
3.连接
这是我的连接代码:
//@override
void connect(const string& conn_url,const string& uname,const string& pswd) {
if(m_SQLInst.net.fd!=0) {
throw GeneralException2(ERROR_SQLDB_RECONNECT_ERROR,"should not re-connect an opened connection. Please create another instance!");
}
//parse url,port,dbname from 'conn_url', like "localhost:3306/my_db"
string tmpurl(conn_url);
size_t pos1=tmpurl.find('/');
if(pos1==string::npos) {
throw GeneralException2(ERROR_WMFE_INVALID_PARAM, "'conn_url' parse error! cannot find '/'");
}
tmpurl[pos1]=0;
int port=3306; //default value
char* p2=strchr((char*)tmpurl.data(),':');
if(p2!=0) {
sscanf(p2+1,"%d",&port);
*p2=0;
}
if(NULL==mysql_real_connect(&m_SQLInst,tmpurl.data(),uname.data(),pswd.data(),""/*tmpurl.data()+pos1+1*/,
port,NULL,CLIENT_MULTI_STATEMENTS)) {
throwException();
}
string db(tmpurl.data() + pos1 + 1);
string createdb_sql = "Create Database If Not Exists " + db + " Character Set UTF8";
exec_no_query(createdb_sql);
string usedb_sql = "USE " + db;
exec_no_query(usedb_sql);
}
但是在连接的过程中发现无法连接mysql,返回错误1130:
ERROR 1130: Host ‘xxx.xxx.xxx.xxx’ is not allowed to connect to thisMySQL serve
这是被连接的账户不允许被远程ip连接,这个账户应该是设置了只允许被localhost连接,所以这里要对这个mysql账户进行修改。参考:MySQL 1130报错_MySQL 1130错误_解决方案_怎么办 - 树懒学堂 (shulanxt.com)
我这里用的是上面参考的改表法,然后就可以远程连接windows上的mysql了。