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