Ubuntu/Deepin下MySQL安装配置以及C语言简单操作

主要内容

  • 卸载残留MySQL
  • 安装MySQL
  • 解决中文乱码问题
  • C语言作为宿主语言操作MySQL
  • 介绍一款MySQL管理软件

MySQL安装配置

一、查看电脑中是否已有MySQL

mysql -V

二、卸载原有MySQL

<如果第一步查询发现没有则跳过此步骤直接开始第三步> 

root权限下执行

apt-get autoremove mysql-server
apt-get remove mysql-common
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

最后一步会出现如下界面,选是

卸载完成

三、安装

sudo apt-get install mysql-server mysql-client

 四、设置密码

1、查看debian.cnf并记录其中user和password字段内容 

cat /etc/mysql/debian.cnf

 2、以默认账号登入MySQL 

注意将debian-sys-maint替换为你自己上一步保存的user中的内容 

mysql -u debian-sys-maint -p

3、输入密码敲回车登录成功<注意linux下输入密码是并不显示>,出现下面界面则表示登录成功

 

4、依次执行以下命令配置新密码<注意分号> 

use mysql;
select host,user,plugin,authentication_string from user;  

注意将新密码替换成你自己的密码 

update user set plugin="mysql_native_password",authentication_string=password('新密码') where user="root";
FLUSH PRIVILEGES;
exit

 

5、尝试用新密码登录 

mysql -u root -p

五、中文乱码问题解决

 可以每次创建数据库时加上默认字符编码,也可根据下面方式一次性改好

1、登入mysql使用如下命令查看MySQL编码发现其中两个不是utf8

SHOW VARIABLES LIKE 'char%';

2、 使用vim或gedit打开/etc/mysql/mysql.conf.d下的mysqld.cnf在lc-messages-dir = /usr/share/mysql 语句后添加 character-set-server=utf8 语句

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

3、在终端中输入如下命令重启MySQL服务

/etc/init.d/mysql restart 

4、登入mysql输入如下命令发现修改成功

SHOW VARIABLES LIKE 'char%'; 

C语言连接mysql

1、安装mysql函数库

sudo apt-get install libmysqlclient-dev

2、登入mysql在用sql语句创建测试用数据库数据库info,并建表people包括id与name两个字段id为主键 

创建数据库info

CREATE SCHEMA `info` ;

创建表people

CREATE TABLE `info`.`people` (
  `id` INT NOT NULL,
  `name` VARCHAR(45) NULL,
  PRIMARY KEY (`id`));

插入测试数据

INSERT INTO `info`.`people` (`id`, `name`) VALUES ('1', '赵满刚');

3、使用vim创建mysql_test.c,写入代码<代码在文章最后>

vim mysql_test.c

4、编译执行<注意连接库 -l mysqlclient>

 介绍一款图形化界面中的mysql管理软件 MySQL workbench

mysql_test.c源码

//filename: mysql_test.c

#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<mysql/mysql.h>
 
int main(void)
{
  char *sql;
  sql="SELECT * FROM people;";
  int res;//执行sql语句后的返回标志
  MYSQL_RES *res_ptr;//指向查询结果的指针
  MYSQL_FIELD *field;//字段结构指针
  MYSQL_ROW result_row;//按行返回查询信息
  int row,column;//查询返回的行数和列数
  MYSQL *conn;//一个数据库链接指针
  int i,j;
 

  //初始化连接句柄
  conn = mysql_init(NULL);
 
  if(conn == NULL) { //如果返回NULL说明初始化失败
    printf("mysql_init failed!\n");
    return EXIT_FAILURE;
  }
 
  //进行实际连接
  //参数 conn连接句柄,host mysql所在的主机或地址,user用户名,passwd密码,database_name数据库名,后面的都是默认
  conn = mysql_real_connect(conn,"localhost","root","Z001221z","info",0,NULL,0);
  if (conn) {
    printf("Connection success!\n");
  } else {
    printf("Connection failed!\n");
  }
  mysql_query(conn,"set names utf8");//防止乱码。设置和数据库的编码一致就不会乱码
 
  res = mysql_query(conn,sql);//正确返回0 sql 里面sql语句
  if(res) {
    perror("my_query");
    mysql_close(conn);
    exit(0);
  } else{
    //把查询结果给res_ptr
    res_ptr = mysql_store_result(conn);
    //如果结果不为空,则输出
    if(res_ptr) {
      column = mysql_num_fields(res_ptr);
      row = mysql_num_rows(res_ptr);
      printf("查到%d行\n",row);
      //输出结果的字段名
      for(i = 0;field = mysql_fetch_field(res_ptr);i++) {
        printf("%10s",field->name);
      }
      puts("");
      //按行输出结果
      for(i = 1;i < row+1;i++){
        result_row = mysql_fetch_row(res_ptr);
        for(j = 0;j< column;j++) {
          printf("%10s",result_row[j]);
        }
        puts("");
      }
    }
  }
  //退出前关闭连接
  mysql_close(conn);
 
  return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值