-
命令行安装
sudo apt-get install mysql-server //服务端 sudo apt-get install mysql-client //客户端 sudo apt-get install libmysqlclient-dev //程序编译时链接的库令行安装
-
验证 MySQL 安装
mysqladmin --version
-
设置用户密码
mysqladmin -u root password "new_password";
让普通程序直接通过密码登录,可以去掉 sudo 权限
$ sudo mysql -u root # 首先使用sudo 进入mysql,执行下面语句。 mysql> USE mysql; mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root'; mysql> FLUSH PRIVILEGES; mysql> exit; $ service mysql restart
在 C/C++ 中使用MySQL
写一个简单的程序来访问该数据库,实现 show tables 功能:
#include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
char server[] = "localhost";
char user[] = "root";
char password[] = "mima";
char database[] = "mysql";
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, server,user, password, database, 0, NULL, 0))
{
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
if (mysql_query(conn, "show tables"))
{
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
res = mysql_use_result(conn);
printf("MySQL Tables in mysql database:\n");
while ((row = mysql_fetch_row(res)) != NULL)
{
printf("%s \n", row[0]);
}
mysql_free_result(res);
mysql_close(conn);
printf("finish! \n");
return 0;
}
编译时选择链接 mysqlclient 库
g++ test.cpp -lmysqlclient
使用 MySQL Cpp Connector
libmysqlcppconn 是 MySQL C 语言版本的C++二次封装,用起来比较方便,官方教程
- 安装库
sudo apt-get install libmysqlcppconn-dev
安装后可见/usr/include/多了三个头文件mysql_connection.h、mysql_deriver.h、mysql_error.h 以及文件夹cppconn
- 使用 libmysqlcppconn-dev 库连接数据库
- 执行简单query
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <stdexcept>
#include <mysql_connection.h>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>
using namespace std;
int main(int argc, const char **argv)
{
const string url="localhost";
const string user="root";
const string pass="asdasd";
const string database="testdb";
// 1.获取驱动
sql::Driver* driver = get_driver_instance();
// 2.连接到mysql server
sql::Connection* conn = driver->connect(url, user, pass);
// 3.选定数据库
conn->setSchema(database);
// 4.创建Statement
sql::Statement* stmt = conn->createStatement();
// 5.执行query
sql::ResultSet* res = stmt->executeQuery("select * from Student;");
// 6.处理结果集
while(res->next())
{
int id = res->getInt("stu_id");
string name = res->getString("stu_name");
cout<<id<<" ,"<<name<<endl;
}
// 7.释放Statement
delete res;
delete stmt;
delete conn;
return 0;
}
- 执行PrepareStatement
#include <mysql_connection.h>
#include <mysql_driver.h>
#include <cppconn/prepared_statement.h>
#include <string>
#include <iostream>
using namespace sql;
using namespace std;
int main()
{
const string url = "localhost";
const string user = "root";
const string password = "zjq588";
const string database = "SRS";
// 1.加载驱动
Driver* driver = mysql::get_mysql_driver_instance();
// 2.连接到mysql
Connection* conn = driver->connect(url,user,password);
// 3.选定数据库
conn->setSchema(database);
// 4.创建PreparedStatement
PreparedStatement* pstmt = conn->prepareStatement("select * from Student where stu_id < ?");
// 5.设置参数
pstmt->setInt(1,1012);
// 6.执行查询
ResultSet* res = pstmt->executeQuery();
// 7.处理结果集
while(res->next())
{
string name = res->getString("stu_name");
int id = res->getInt("stu_id");
cout<<name<<" , "<<id<<endl;
}
// 8.释放资源
delete res;
delete pstmt;
delete conn;
return 0;
}
编译时连接库 libmysqlcppconn
g++ test.cpp -L/usr/lib/ -lmysqlcppconn