Ubuntu MYSQL的安装及C++测试

mysql 8 的安装

更新apt列表

    sudo apt-get update

安装MySQL服务器

    sudo apt-get install mysql-server

安装MySQL客户端

    sudo apt-get install mysql-client

安装 libmysqlclinet-dev

    sudo apt install libmysqlclient-dev	

配置MySQL 脚本

可以默认 ,一直回车键

    sudo mysql_secure_installation

Mysql 服务的状态查看

    # 启动
    sudo systemctl start mysql;
    # 查看
    sudo systemctl status mysql;
    # 结束
    sudo systemctl stop mysql;

MySQL的配置文件

    sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

配置root密码

  • 在mysqld.cnf配置文件里面添加一句 skip-grant-tables, 此时再进入mysql是不需要密码的,直接mysql -u root即可。
  • 密码规则
SHOW VARIABLES LIKE 'validate_password%';


我们可以使用下面的SQL语句修改一些

    SET GLOBAL validate_password.length = 6;
    SET GLOBAL validate_password.mixed_case_count = 0;
    SET GLOBAL validate_password.number_count = 0;
    SET GLOBAL validate_password.special_char_count = 0;

然后在修改密码

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '123456';

将root用户改为可在任何host访问

  • 查看 SELECT User, Host FROM mysql.user;

  • 授予新用户所有权限:
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
  • 刷新
    FLUSH PRIVILEGES;
  • 打开配置文件mysqld.cnf,找到bind-address = 127.0.0.1这一行改为bind-address = 0.0.0.0即可或简单一点注释掉也行,修改完成保存后,需要重启MySQL服务才会生效

测试 libmysqlclient 库

#include<iostream>
#include <mysql/mysql.h>
using namespace std;

const char* host = "127.0.0.1"; //主机名
const char* user = "root"; //用户名
const char* pwd = "123456"; //密码
const char* database_name = "mysql"; //数据库名称 
int port = 3306; //端口号
int main(){
    MYSQL* sql = nullptr;
    sql = mysql_init(sql);
    if(!sql){
        std::cout << "MySql init error!" << std::endl;
    }
    sql = mysql_real_connect(sql, host, user, pwd, database_name, port, nullptr, 0);

    if (!sql) {
        std::cout << "MySql Connect error!" << std::endl;
    }

    std::string command = "select * from mysql;";

    int ret = mysql_query(sql, command.c_str());        // 查询结果
    std::cout<<command<<std::endl;
    if (ret) {
        std::cout << "error!" << std::endl;
        printf("修改表数据失败!失败原因:%s\n", mysql_error(sql));
    } else {
        std::cout << "success!" << std::endl;
    }

    MYSQL_RES* res_ptr = mysql_store_result(sql);       

    MYSQL_ROW sqlrow = mysql_fetch_row(res_ptr);    // 读取一行

    if(sqlrow){
       
        for(int i=0; i< mysql_num_fields(res_ptr); i++){
            cout << sqlrow[i]<<" ";
        }
        cout << endl;
    }
    mysql_free_result(res_ptr);
    mysql_close(sql);
}

  • 编译
    g++ main.cpp -lmysqlclient -o main 
  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值