Ubuntu下安装MySQL 以及C++连接MySQL

一、简单分享Ubuntu 16.04下安装MySQL的过程。

 

首先执行下面三条命令:

Linux下C++连MySQL数据库

sudo apt-get install mysql-server
sudo apt-get isntall mysql-client
sudo apt-get install libmysqlclient-dev

启动mysql服务器

sudo service mysql start

进入mysql数据库

sudo mysql -uroot -p"password"

输入mysql -uroot -p"password"进入不了数据库解决:
解决方案:
方法1;
步骤一:登录mysql

sudo mysql -u root -p

步骤二:查看user表:

select user, plugin from mysql.user;

结果如下:  

mysql> select user, plugin from mysql.user;
    +-----------+-----------------------+
    | user      | plugin                |
    +-----------+-----------------------+
    | root      | auth_socket           |
    | mysql.sys | mysql_native_password |
    | dev       | mysql_native_password |
    +-----------+-----------------------+
    3 rows in set (0.01 sec)

发现root的plugin并不是本地密码,因此需要修改它,但由于MySQL5.6.6版本之后增加了密码强度验证插件validate_password,相关参数设置的较为严格。如果修改的密码太过低级,则无法通过,报如下错误:
    ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    因此,如果要设置为简单密码,则需修改密码规则的配置,参考博客:https://blog.csdn.net/kuluzs/article/details/51924374
步骤三:修改mysql参数配置:

    set global validate_password_policy=0;
    set global validate_password_mixed_case_count=0;
    set global validate_password_number_count=3;
    set global validate_password_special_char_count=0;
    set global validate_password_length=3;

步骤四:修改root密码

update mysql.user set authentication_string=PASSWORD('123'), plugin='mysql_native_password' where user='root';

flush privileges;

最后重启终端,就可通过mysql -u root -p 免sudo登录mysql啦!

 

方法2;
步骤一:停止mysql服务

sudo service mysql stop

步骤二:以安全模式启动MySQL
    sudo mysqld_safe --skip-grant-tables &
    //或:sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf,进入到这个配置文件,然后在这个配置文件中的[mysqld]这一块中加入skip-grant-tables这句话。并重启。

[mysqld]
 2 #
 3 # * Basic Settings
 4 #
 5 user              = mysql
 6 pid-file          = /var/run/mysqld/mysqld.pid
 7 socket           = /var/run/mysqld/mysqld.sock
 8 port              = 3306
 9 basedir          = /usr
10 datadir          = /var/lib/mysql
11 tmpdir          = /tmp
12 lc-messages-dir   = /usr/share/mysql
13 skip-external-locking
14 character-set-server=utf8
15 collation-server=utf8_general_ci
16 skip-grant-tables

    MySQL启动之后就可以不用密码登陆了

 ~$ mysql -u root
    Welcome to the MySQL monitor.  Commands end with ; or \g.

步骤三;
    

update mysql.user set authentication_string=PASSWORD('123'), plugin='mysql_native_password' where user='root';

flush privileges;


步骤四:
    重启服务,问题就解决了
    

sudo service mysql stop
sudo service mysql start
mysql -u root -p


二、通过C++连接数据库


创建一个用于练习的数据库test.进入mysql> 然后依次输入:
    mysql>create database test; 
    mysql>use test;    //切换到test数据库中
    mysql> create table test(name varchar(255),num int(10) ); //创建一个叫test的表
    mysql>show create table test;  //显示刚才创建的表信息
    mysql> select * from test;   //查询test表中数据
    mysql>quit
编写C++文件mysqltest.cpp:

#include <stdio.h>
#include <iostream>
#include <mysql.h>
using namespace std;
int main(int argc,char *argv[])
{
    MYSQL conn;
    int res;
    mysql_init(&conn);
    //"root":数据库管理员 "123":root密码 "test":数据库的名字
    if(mysql_real_connect(&conn, "localhost","root","123","test",0,NULL,CLIENT_FOUND_ROWS))
    {
        cout << "connect success" << endl;
        res = mysql_query(&conn, "insert into test values('user','123456')");
    if(res)
    {
        printf("error\n");
    }
    else
    {
        printf("OK\n");
    }
    mysql_close(&conn);
    }else
    {
        cout << "connect failed" << endl;
    }
    return 0;
}

 

编译程序

    使用的编译代码(注意哪两个不是单引号而是反单引号)

g++ mysqltest.cpp `mysql_config --cflags --libs` -o mysqltest

运行

    ./mysqltest

再次查看数据库

mysql>use test;
mysql>select * from test;

    这样就可以查看到插入的信息了。

    

 

三、设置mysql允许远程访问

 

首先编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf:

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

注释掉bind-address = 127.0.0.1

保存退出,然后进入mysql服务,执行授权命令:

grant all on *.* to root@'%' identified by '你的密码' with grant option;

flush privileges;

然后执行quit命令退出mysql服务,执行如下命令重启mysql:

service mysql restart

现在在Windows下可以使用navicat远程连接Ubuntu下的MySQL服务:

Ubuntu 16.04安装MySQL及问题解决  http://www.linuxidc.com/Linux/2017-05/143861.htm

参考:https://blog.csdn.net/ggm0928/article/details/83687111

  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值