CentOS7默认数据库是mariadb,配置等用着不习惯,因此决定改成mysql,但是CentOS7的yum源中默认好像是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。

1.下载mysql的repo源

$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

2.安装mysql-community-release-el7-5.noarch.rpm包

$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm

安装这个包后,会获得两个mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo。

3.安装mysql

$ sudo yum install mysql-server

根据提示安装就可以了,不过安装完成后没有密码,需要重置密码

4.重置mysql密码

$ mysql -u root

登录时有可能报这样的错:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2),原因是/var/lib/mysql的访问权限问题。下面的命令把/var/lib/mysql的拥有者改为当前用户:

$ sudo chown -R root:root /var/lib/mysql

重启mysql服务

$ service mysqld restart

接下来登录重置密码:

$ mysql -u root  //直接回车进入mysql控制台
mysql > use mysql;
mysql > update user set password=password('123456') where user='root';
mysql > exit;

#include <stdio.h>
 2 #include <mysql.h>
 3 
 4 int main(int argc,char *argv[])
 5 {
 6     MYSQL conn;
 7     int res;
 8     mysql_init(&conn);
 9     if(mysql_real_connect(&conn,"localhost","root","","test",0,NULL,CLIENT_FOUND_ROWS)) //"root":数据库管理员 "":root密码 "test":数据库的名字
10     {
11       printf("connect success!\n");
12       res=mysql_query(&conn,"insert into test values('user','123456')");
13       if(res)
14       {
15           printf("error\n");
16       }
17       else
18       {
19           printf("OK\n");
20       }
21       mysql_close(&conn);
22     }
23     return 0;
24 }

  代码不是很难理解,就不解释了。

 

编译程序

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

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

  

运行代码

    ./test

 

再次查看数据库

    mysql>use test;

    mysql>select * from test;

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


本文永久更新链接地址http://www.linuxidc.com/Linux/2016-09/134940.htm


fatal error: mysql.h: No such file or directory

有可能是没有安装mysql链接库

可以用yum search mysql或者apt-cache search mysql搜索mysql相关安装文件

[root@zl myPrj]# yum list "*mysql*" | grep devel
libgda-mysql-devel.i686                       1:4.2.4-2.fc14            updates 
mysql++-devel.i686                            3.1.0-2.fc14              fedora  
mysql-connector-c++-devel.i686                1.1.0-0.4.bzr895.fc14     updates 
mysql-devel.i686                              5.1.60-1.fc14             updates 
mysql-embedded-devel.i686                     5.1.60-1.fc14             updates 

[root@zl myPrj]# yum -y install mysql++-devel.i686



mysql API接口

  • mysql_affected_rows() 返回被最新的UPDATE, DELETE或INSERT查询影响的行数。
  • mysql_close() 关闭一个服务器连接。
  • mysql_connect() 连接一个MySQL服务器。该函数不推荐;使用mysql_real_connect()代替。
  • mysql_change_user() 改变在一个打开的连接上的用户和数据库。
  • mysql_create_db() 创建一个数据库。该函数不推荐;而使用SQL命令CREATE DATABASE。
  • mysql_data_seek() 在一个查询结果集合中搜寻一任意行。
  • mysql_debug() 用给定字符串做一个DBUG_PUSH。
  • mysql_drop_db() 抛弃一个数据库。该函数不推荐;而使用SQL命令DROP DATABASE。
  • mysql_dump_debug_info() 让服务器将调试信息写入日志文件。
  • mysql_eof() 确定是否已经读到一个结果集合的最后一行。这功能被反对; mysql_errno()或mysql_error()可以相反被使用。
  • mysql_errno() 返回最近被调用的MySQL函数的出错编号。
  • mysql_error() 返回最近被调用的MySQL函数的出错消息。
  • mysql_escape_string() 用在SQL语句中的字符串的转义特殊字符。
  • mysql_fetch_field() 返回下一个表字段的类型。
  • mysql_fetch_field_direct () 返回一个表字段的类型,给出一个字段编号。
  • mysql_fetch_fields() 返回一个所有字段结构的数组。
  • mysql_fetch_lengths() 返回当前行中所有列的长度。
  • mysql_fetch_row() 从结果集合中取得下一行。
  • mysql_field_seek() 把列光标放在一个指定的列上。
  • mysql_field_count() 返回最近查询的结果列的数量。
  • mysql_field_tell() 返回用于最后一个mysql_fetch_field()的字段光标的位置。
  • mysql_free_result() 释放一个结果集合使用的内存。
  • mysql_get_client_info() 返回客户版本信息。
  • mysql_get_host_info() 返回一个描述连接的字符串。
  • mysql_get_proto_info() 返回连接使用的协议版本。
  • mysql_get_server_info() 返回服务器版本号。
  • mysql_info() 返回关于最近执行得查询的信息。
  • mysql_init() 获得或初始化一个MYSQL结构。
  • mysql_insert_id() 返回有前一个查询为一个AUTO_INCREMENT列生成的ID。
  • mysql_kill() 杀死一个给定的线程。
  • mysql_list_dbs() 返回匹配一个简单的正则表达式的数据库名。
  • mysql_list_fields() 返回匹配一个简单的正则表达式的列名。
  • mysql_list_processes() 返回当前服务器线程的一张表。
  • mysql_list_tables() 返回匹配一个简单的正则表达式的表名。
  • mysql_num_fields() 返回一个结果集合重的列的数量。
  • mysql_num_rows() 返回一个结果集合中的行的数量。
  • mysql_options() 设置对mysql_connect()的连接选项。
  • mysql_ping() 检查对服务器的连接是否正在工作,必要时重新连接。
  • mysql_query() 执行指定为一个空结尾的字符串的SQL查询。
  • mysql_real_connect() 连接一个MySQL服务器。
  • mysql_real_query() 执行指定为带计数的字符串的SQL查询。
  • mysql_reload() 告诉服务器重装授权表。
  • mysql_row_seek() 搜索在结果集合中的行,使用从mysql_row_tell()返回的值。
  • mysql_row_tell() 返回行光标位置。
  • mysql_select_db() 连接一个数据库。
  • mysql_shutdown() 关掉数据库服务器。
  • mysql_stat() 返回作为字符串的服务器状态。
  • mysql_store_result() 检索一个完整的结果集合给客户。
  • mysql_thread_id() 返回当前线程的ID。
  • mysql_use_result() 初始化一个一行一行地结果集合的检索。