一、准备工作
1. 编译环境:
银河麒麟V10 + 飞腾D2000 CPU
2. 下载MySQL源码
这里编译的是5.7.44版本,带Boost库,这是官网的下载地址:MySQL :: Download MySQL Community Server (Archived Versions)
3. 解压压缩包
tar -zxvf mysql-boost-5.7.44.tar.gz
4. 安装所依赖的库
1)、安装CMake编译环境,有CMake则不用安装
sudo apt-get install cmake
2)、安装gcc和g++
sudo apt-get install gcc
sudo apt-get install g++
3)、安装其他依赖
// OpenSSL
sudo apt-get install libssl-dev
// Curses
sudo apt-get install libncurses-dev
// PkgConfig
sudo apt-get install pkg-config
二、编译安装
1. cmake预编译
执行cmake 命令进行预编译,配置安装路径:
sudo cmake -DCMAKE_INSTALL_PREFIX=/usr/local/MySQL -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/源码路径/boost
DCMAKE_INSTALL_PREFIX 是MySQL想要安装的路径,我这里安装的是
DWITH_BOOST 是下载源码路径下的boost文件夹
2. 进行编译
编译大概需要半个小时左右
sudo make -j8
3. 安装
sudo make install
三、配置MySQL
1. 编辑配置文件
配置文件在 /etc/mysql 这个路径下
cd /etc/mysql #进入配置文件目录
cp my.cnf my.cnf.back # 以防万一先备份
编辑my.cnf配置文件,在其中添加下面的内容:
[client]
port = 3306 #端口
socket = /tmp/mysql.sock #MYSQL Socket通信文件位置[mysqld]
port = 3306 #端口
socket = /tmp/mysql.sock #MYSQL Socket通信文件位置
user = mysql #用户
basedir = /usr/local/MySQL/ #mysql源码安装位置
datadir = /data/mysql/ #mysql数据存放位置
pid-file = /data/mysql/mysql.pid #进程文件存放路径log-error = /data/mysql/mysql-error.log #报错日志存放路径
2. 创建新用户
创建MySQL数据文件夹
mkdir -p /data/mysql
创建mysql用户
useradd -s /sbin/nologin mysql
授权数据存放路径可写权限
chown mysql . /data/mysql/
chown -R mysql. /data/mysql/
3. 初始化MySQL
进入安装路径下的bin目录
cd /usr/local/MySQL/bin/
使用“--initialize”初始化命令执行后,会生成一个随机密码,用来之后登录MySQL,在输出的最后一行(如:root@localhost:AUCd3=fhb8f5)。需要记录下来,登录MySQL之后再修改密码,如果使用 --initialize-insecure初始化,这样默认密码为空。
./mysqld --initialize --user=mysql --basedir=/usr/local/MySQL/ --datadir=/data/mysql/
--user=mysql #<---用户
--basedir=/usr/local/MySQL #<---数据库安装路径
--datadir=/data/mysql/ #<---数据库文件路径
4. 拷贝启动脚本
将启动脚本拷贝到/etc/init.d目录下,命名为mysqld
// 进入开启mysql执行文件的目录
cd /usr/local/MySQL/support-files
// 把开启执行文件拷贝到/etc/init.d目录下面
cp mysql.server /etc/init.d/mysqld
5. 启动
使用下面的命令直接启动MySQL服务:
/etc/init.d/mysqld start
启动后会占用3306端口,使用下面命令检查3306端口,判断服务是否开启:
netstat -nltp
也可以用下面的命令查询MySQL是否启动:
ps -ef | grep mysql
6. 配置环境变量
使用echo $PATH命令查询当前的环境变量。
添加MySQL的路径到环境变量中:
echo “export PATH=/usr/local/MySQL/bin:$PATH” >> /etc/profile
使用下面命令保存,使环境变量生效:
source /etc/profile
7. 登录MySQL
使用下面的命令登录MySQL,密码就是初始化时生成的随机密码:
mysql -u root -p AUCd3=fhb8f5
如果忘记上面的随机密码的话,在my.cnf配置文件中添加一行:
skip-grant-tables
然后重启服务器,这样再次登录时就不需要密码:
// 重启MySQL服务器
systemctl restart mysqld
登录成功后使用下面的命令修改密码:
update mysql.user set authentication_string ='123456' where user="root";
使用quit退出MySQL。
三、Qt连接MySQL数据库
1. 编译QMySQL驱动
由于在QT5的版本中移除了MySQL数据库驱动libqsqlmysql.so,因此我们需要重新编译QT源码中的MySQL驱动,以生成libqsqlmysql.so。
首先需要你安装的Qt版本的源码,可以在官网选择自己的版本下载:Index of /archive/qt
找到源码中QMySQL驱动的源码,在Qt源码路径下的qtbase/src/plugins/sqldrivers/mysql,进入路径下后可以看到有这几个源码文件。
使用Qt打开其中的mysql.pro工程文件,并按照下面这样修改mysql.pro文件,添加的两个路径为安装的MySQL下的Include路径和lib路径:
修改完后,点击编译即可,编译后生成的库的路径是qtbase/plugins/sqldrivers/,可以看到下面有编译后生成的libqsqlmysql.so库文件。
把这个库文件复制到Qt的安装路径下的/plugins/sqldrivers/,并把MySQL安装路径下的lib文件夹里的libmysqlclient.so相关的3个库文件都复制到/usr/lib文件夹下。否则Qt调用MySQL的时候,会报QSqlDatabase: QMYSQL driver not loaded错误。因为libqsqlmysql.so这个库依赖于libmysqlclient.so这个库,不加到/usr/lib路径下的话可能会找不到。
2. 测试QT连接MySQL数据库
最后使用Qt代码连接MySQL测试,Qt连接MySQL需要先在pro文件中加上:
QT += sql
引用头文件<QSqlDatabase>,并用下面的代码查询当前Qt支持的数据库驱动:
qDebug() << QSqlDatabase::drivers();
//再次查看QT支持的数据库驱动,可以看到已经支持MySQL了!
("QSQLITE", "QMYSQL", "QMYSQL3")
使用下面的代码连接数据库:
// 测试数据库连接
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
// 设置数据库连接参数
db.setHostName("127.0.0.1");
db.setDatabaseName("demo");
db.setUserName("root");
db.setPassword("123456");
// 尝试连接数据库
if (db.open())
{
qDebug() << "Connected to database";
}
else
{
qDebug() << "Failed to connect to database:" << db.lastError().text();
}
QSqlQuery query;
query.exec("SELECT * FROM student");
while (query.next())
{
QString value = query.value(0).toString();
// 处理查询结果
qDebug() << value;
}
db.close(); //关闭数据库