配置 mysql 基于C++11的数据库连接池环境配置 xingzhu 2025-01-21 2025-03-27
ubuntu 安装 python2
安装 python2 是因为我要在 Linux 中配置 Jsoncpp, 这个配置需要 Python2,所以如果是想用 Windows 的 Jsoncpp,并且使用 Windows 的 VS 运行,跳过这个即可 Windows 下 VS 使用 Jsoncpp,配置参考:https://xingzhu.top/archives/jsoncpp
由于接下来要使用 python
,所以先安装 python
1 2 3 4 # 安装 python2.7.18 即可 # python3 不行,版本过高,会报错 sudo apt install python2 python2 --version
安装完成后我们可以使用如下命令来检查目前可用的 Python 版本:
在 Ubuntu 中切换默认 Python 版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 9 sudo update-alternatives --config python # 可能出现以下场景,说明之前配置过默认方式 There are 2 choices for the alternative python (providing /usr/bin/python). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/python3 2 auto mode 1 /usr/bin/python2 1 manual mode 2 /usr/bin/python3 2 manual mode Press to keep the current choice[*], or type selection number: # 选择 python2 即可,也就是填写数字 1
查看默认版本
1 2 # 会看到 python 2.7.18 python --version
ubuntu 安装 mysql
安装 mysql
1 2 sudo apt update sudo apt install mysql-server
安装完成后,MySQL 服务将自动启动。要验证 MySQL 服务器正在运行,请输入
1 sudo systemctl status mysql
初始化数据库
1 2 mysql -u root # 然后设置密码,下次就能 mysql -u root -p 输入密码登录了
安装 mysql
头文件和静态库文件
1 2 3 # 安装了这个之后,就能调用 MYSQL 的功能函数 # 主要是在写程序中使用,使用 <mysql.h> 头文件 sudo apt-get install libmysqlclient-dev
由于安装后,mysql.h
默认安装在 /usr/include/mysql
这个目录中,因此每次调用 mysql.h
,编译都需要指定头文件路径
1 g++ *.cpp -o main -I/usr/include/mysql -lmysqlclient
1 2 3 4 5 6 7 8 9 10 # 打开配置 .bashrc 文件,这是一个配置文件,每次启动机器都会加载这个配置 vim ~/.bashrc # 在文件末尾加入这个 export CPLUS_INCLUDE_PATH=/usr/include/mysql:$CPLUS_INCLUDE_PATH # 使配置立即生效,不执行这个,需要重启虚拟机才能加载到环境中 source ~/.bashrc
1 g++ *.cpp -o main -lmysqlclient
测试代码 (只是测试 MYSQL API 能否使用,也就是上述环境是否配置成功)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <stdio.h> #include <mysql.h> int main () { MYSQL *conn = mysql_init (NULL ); if (mysql_real_connect (conn, "localhost" , "username" , "password" , "database" , 0 , NULL , 0 ) == NULL ) { fprintf (stderr, "连接失败: %s\n" , mysql_error (conn)); return 1 ; } printf ("成功连接到数据库!\n" ); mysql_close (conn); return 0 ; }
Linux 访问 Windows 数据库
这个可以跳过,就使用 Linux 下 MySQL 即可,但是我想操作的数据就保存在 Windows MySQL 下,而且还想访问 Windows 下的数据库,所以折腾了一下这个
建立防火墙规则
打开 Windows 的防火墙,找到高级设置
依次点击这两个
点击这个端口
填写端口号
名称任意指定
进行连接
首先设置 Windows MySQL 数据库权限,让其他机器能够访问
1 2 # 登录数据库 mysql -u root -p
1 2 3 4 5 6 7 8 9 CREATE USER 'username' @'%' IDENTIFIED BY 'password' ;GRANT ALL PRIVILEGES ON * .* TO 'username' @'%' ;FLUSH PRIVILEGES;
Linux 登录
1 2 3 4 mysql -u root -h Windows的 IP地址 -p # 查看 Windows的 IP 地址 ipconfig
Linux 下 json 库安装
由于我是想用 Linux 下的 jsoncpp,并且在 SSH 远程连接下使用命令行编译程序,所以如此配置 若想使用 Windows 的 jsoncpp,并且在 VS 上运行,就需要配置 VS 环境,参考: https://xingzhu.top/archives/jsoncpp
官网下载 json-cpp
https://sourceforge.net/projects/jsoncpp/files/
或者我的百度网盘: 链接: https://pan.baidu.com/s/1qwzWf9hOHmTr0SCERTdoog 提取码:0278
下载 scons
http://sourceforge.net/projects/scons/files/scons/2.1.0/scons-2.1.0.tar.gz/download
或者我的百度网盘: 链接: https://pan.baidu.com/s/1tl1B6mZNM2M26Nx-biwAqA 提取码:0278
解压
1 2 3 # 目录的选择根据自身需求 tar -zvxf scons-2.1.0.tar.gz tar -zvxf jsoncpp-src-0.5.0.tar.gz
安装
1 2 3 4 5 6 7 8 # 进入刚刚解压的 scons-2.1.0 文件夹中 cd scons-2.1.0 sudo python setup.py install # 进入刚刚解压的 jsoncpp-src-0.5.0 文件夹中 cd jsoncpp-src-0.5.0 sudo scons platform=linux-gcc
配置
1 2 3 4 5 6 7 8 9 10 11 12 13 # 将 /jsoncpp-src-0.5.0/include/json 拷贝到 /usr/include cd jsoncpp-src-0.5.0 sudo cp -r ./include/json /usr/include # 将 /jsoncpp-src-0.5.0/libs/linux-gcc-11 目录下的 libjson_linux-gcc-5.3.1_libmt.a 拷贝到 /usr/local/lib 下 # 由于 gcc 版本不同,可能解析后名字不同,这里进入 libs目录 ls 查看一下,在逐步进入拷贝 cd ./libs/linux-gcc-11 sudo cp -r libjson_linux-gcc-11_libmt.a /usr/local/lib # 由于这个静态库太长,重命名一下 sudo mv /usr/local/lib/libjson_linux-gcc-11_libmt.a /usr/local/lib/libjson.a
测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include <iostream> #include <json/json.h> using namespace std;int main () { string test = "{\"id\":2021,\"name\":\"Happy New Year\"}" ; Json::Reader reader; Json::Value value; if (reader.parse (test,value)) { if (!value["id" ].isNull ()) { cout << value["id" ].asInt () << endl; cout << value["name" ].asString () << endl; } } return 0 ; }
1 2 g++ test.cpp -o test -L/usr/local/lib -ljson ./test
配置环境变量
由于每次编译链接都需要指定这个库的搜索路径 /usr/local/lib
,所以将其加到链接器中,执行文件时指定链接器搜索的路径
1 2 3 4 5 export LIBRARY_PATH=/usr/local/lib:$LIBRARY_PATH # 这样之后,就能直接使用 # 注意使用过程中,要去头和去尾,也就是 lib 和 .a 要去掉,json 才是实际库名 g++ test.cpp –o test -ljson
xingzhu
keep trying!keep doing!believe in yourself!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 星竹 !