当前位置: 首页 > news >正文

多国语言网站建设wordpress 卡

多国语言网站建设,wordpress 卡,免费服务器地址和ip,江津哪个网站可以做顺风车目录 一、准备工作 1、创建mysql用户 2、删除用户 3、修改用户密码 3.1、自己改自己密码 3.2、root用户修改指定用户的密码 4、数据库的权限 4.1、给用户授权 4.2、回收权限 二、连接mysql client 1、安装mysql客户端库 2、验证是否引入成功 三、 mysql接口 1、初…

目录

一、准备工作

1、创建mysql用户

2、删除用户

3、修改用户密码

3.1、自己改自己密码

3.2、root用户修改指定用户的密码

4、数据库的权限

4.1、给用户授权

4.2、回收权限

二、连接mysql client

1、安装mysql客户端库

2、验证是否引入成功

三、 mysql接口

1、初始化数据库

2、连接数据库

3、下发mysql命令mysql_query

4、获取执行结果mysql_store_result


一、准备工作

1、创建mysql用户

使用创建用户命令,创建一个mysql用户:

create user '用户名'@'登陆主机/ip' identified by '密码';

如果因为首次进入MySQL导致创建用户失败,出现如下报错:

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

则可以先使用mysql的刷新指令:

flush privileges;

刷新完毕后即可创建成功。

2、删除用户

drop user '用户名'@'主机名'

3、修改用户密码

3.1、自己改自己密码

set password=password('新的密码');

3.2、root用户修改指定用户的密码

set password for '用户名'@'主机名'=password('新的密码');

4、数据库的权限

MySQL数据库提供的权限列表:

4.1、给用户授权

刚创建的用户没有任何权限。需要给用户授权。

grant 权限列表 on 库.对象名 to '用户名'@'登陆位置'

权限列表,多个权限用逗号分开:

grant select on ...
grant select, delete, create on ....
grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限
  • *.* : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)
  • 库.* : 表示某个数据库中的所有数据对象(表,视图,存储过程等)

4.2、回收权限

revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';

二、连接mysql client

1、安装mysql客户端库

直接使用yum源进行安装:

sudo yum install mysql-devel

2、验证是否引入成功

#include <iostream>
#include <mysql/mysql.h>int main()
{std::cout << "mysql client version: " << mysql_get_client_info() << std::endl;return 0;
}

编译:

g++ -o test test.cc -L/lib64/mysql -lmysqlclient

可以查看到当前mysql客户端的版本号。

三、 mysql接口

1、初始化数据库

初始化库需要调用函数:

MYSQL *mysql_init(MYSQL *mysql);

例如:

#include <iostream>
#include <mysql/mysql.h>int main()
{MYSQL* my = mysql_init(nullptr);if(nullptr == my){std::cerr << "init MYSQL err" << std::endl;return 1;}return 0;
}

2、连接数据库

初始化完毕之后,必须先链接数据库,在进行后续操作。(mysql网络部分是基于TCP/IP的)。

MYSQL *mysql_real_connect(MYSQL *mysql, const char *host,const char *user,const char *passwd,const char *db,unsigned int port,const char *unix_socket,unsigned long clientflag);
// 建立好链接之后,获取英文没有问题,如果获取中文是乱码:
// 设置链接的默认字符集是utf8,原始默认是latin1
mysql_set_character_set(myfd, "utf8");

 第一个参数 MYSQL是 C api中一个非常重要的变量(mysql_init的返回值),里面内存非常丰富,有 port, dbname,charset等连接基本参数。它也包含了一个叫 st_mysql_methods的结构体变量,该变量里面保存着很多函数指针,这些函数指针将会在数据库连接成功以后的各种数据操作中被调用。

 mysql_real_connect函数中各参数,基本都是顾名思意。

例如:

#include <iostream>
#include <mysql/mysql.h>
#include <string>const std::string host = "127.0.0.1";
const std::string user = "connect";
const std::string password = "123456";
const std::string db = "conn";
const unsigned int port = 3306;int main()
{MYSQL *my = mysql_init(nullptr);if (nullptr == my){std::cerr << "init MYSQL err" << std::endl;return 1;}if(mysql_real_connect(my, host.c_str(), user.c_str(), password.c_str(), db.c_str(), port, nullptr, 0) == nullptr){std::cerr << "connect MySQL error" << std::endl;return 2;}mysql_set_character_set(my, "utf8");std::cout << "connect success" << std::endl;mysql_close(my);return 0;
}

运行观察结果:

 

3、下发mysql命令mysql_query

int mysql_query(MYSQL *mysql, const char *q);

第一个参数上面已经介绍过,第二个参数为要执行的sql语句,如“select * from table”。

例如:

#include <iostream>
#include <mysql/mysql.h>
#include <string>
#include <unistd.h>const std::string host = "127.0.0.1";
const std::string user = "connector";
const std::string password = "123456";
const std::string db = "conn";
const unsigned int port = 3306;int main()
{MYSQL *my = mysql_init(nullptr);if (nullptr == my){std::cerr << "init MYSQL err" << std::endl;return 1;}if(mysql_real_connect(my, host.c_str(), user.c_str(), password.c_str(), db.c_str(), port, nullptr, 0) == nullptr){std::cerr << "connect MySQL error" << std::endl;return 2;}mysql_set_character_set(my, "utf8");std::cout << "connect success" << std::endl;std::string sql;while(true){std::cout << "MySQL>>> ";if(!std::getline(std::cin, sql) || sql == "quit"){std::cout << "MySQL>>> bye bye" << std::endl;break;}int n = mysql_query(my, sql.c_str());if(n == 0)std::cout << sql << "success: " << n << std::endl;elsestd::cerr << sql << " failed: " << n << std::endl;}mysql_close(my);return 0;
}

再例如:

std::string sql = "update user set name='Jimmy' where id = 1";
int n = mysql_query(my, sql.c_str());
if (n == 0)std::cout << sql << "success" << std::endl;
elsestd::cout << sql << "failed" << std::endl;

4、获取执行结果mysql_store_result

 sql执行完以后,如果是查询语句,我们当然还要读取数据,如果update,insert等语句,那么就看下操作成功与否即可。

 我们来看看如何获取查询结果: 如果mysql_query返回成功,那么我们就通过mysql_store_result这个函数来读取结果。原型如下:

MYSQL_RES *mysql_store_result(MYSQL *mysql);

 

 MYSQL_RES结构体可以行列为单位把查询得到的表结构数据组织好。

 在我们使用mysql_query函数进行查询结果后,对应的数据就被存放进了MYSQL结构体响应的空间中,此时我们再调用mysql_store_result函数,把这部分数据转储进 MYSQL_RES结构体里。

MYSQL_RES *res = mysql_store_result(my);
if (nullptr == res)
{std::cerr << "mysql_store_result error" << std::endl;return 4;
}

 该函数会调用MYSQL变量中的st_mysql_methods中的 read_rows 函数指针来获取查询的结果。同时该函数会返回MYSQL_RES 这样一个变量,该变量主要用于保存查询的结果。同时该函数malloc了一片内存空间来存储查询过来的数据,所以我们一定要记的 free(result),不然是肯定会造成内存泄漏的。 执行完mysql_store_result以后,其实数据都已经在MYSQL_RES 变量中了,下面的api基本就是读取MYSQL_RES 中的数据。

获取结果行数mysql_num_rows:

my_ulonglong mysql_num_rows(MYSQL_RES *res);

获取结果列数mysql_num_fields:

unsigned int mysql_num_fields(MYSQL_RES *res);

获取列名mysql_fetch_fields:

MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *res);

MYSQL_FIELD中存储列的所有属性信息:

使用方法:

int rows = mysql_num_rows(res);
int fields = mysql_num_fields(res);
MYSQL_FIELD *field = mysql_fetch_fields(res);
for (int i = 0; i < fields; i++)
{std::cout << field[i].name << " ";
}
std::cout << std::endl;

获取结果内容mysql_fetch_row:

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);

它会返回一个MYSQL_ROW变量,MYSQL_ROW其实就是char **.就当成一个二维数组来用吧。

for (int i = 0; i < rows; i++)
{MYSQL_ROW line = mysql_fetch_row(res);for (int j = 0; j < fields; j++){std::cout << line[j] << "\t";}std::cout << "\n";
}

释放MYSQL_RES结构体函数:

mysql_free_result(MYSQL_RES* res);

关闭mysql链接mysql_close:

void mysql_close(MYSQL *sock);
http://www.yayakq.cn/news/805306/

相关文章:

  • 网站的开发费用吗谢岗网站仿做
  • 网站风格分析深圳福田会展中心近期展会
  • 网站设计需求文档范例外贸网站建设如何做呢
  • 杭州网站建设网页制作seo搜索规则
  • 怎样设置默认网站深圳品牌策划公司排行
  • 在阿里云做的网站怎么移动网站建站方案说明书
  • 浙江省建设厅执业资格注册中心网站网站代理网站
  • 黑客怎么攻击网站yellow的视频播放
  • 如何做网站活动广州手工外发加工网
  • 做阿里巴巴网站多少钱网页网站开发工具
  • 厦门专业做网站 厦门做网站的公司 厦门做服饰网站亿网中国网站管理系统
  • 中国建设银行云南官网站纪念币自建网站平台要多少钱
  • 简单网页制作代码html上海怎么做seo推广
  • 纯静态做企业网站android获取Wordpress数据库
  • 个人手机网站建设icp许可证个人网站
  • 南海区住房和城乡建设部网站阿里巴巴官网首页
  • 哪个网站可下载免费pptwordpress生成静态 mip
  • 辽宁省城乡住房和建设厅网站如何开发公司的网站
  • APP加网站建设预算多少钱建立企业网站几天
  • 甘肃金顶建设公司网站员工管理系统源码
  • 进什么网站接模具做西安有什么好玩的景点推荐
  • 深圳做网站外包公司有哪些邢台企业做网站费用
  • 青海省建设网站多少钱推广普通话的重要性
  • 网站使用方法备案网站ip
  • 绿色风格网站为什么访问外国网站速度慢
  • 河南商务学校网站建设下载用的网站怎么做
  • 企业网站明细费用租车网站制作
  • 做网站的软件是是什么网站建设hairongsoft
  • html5响应式手机网站川制作官方网站
  • 打鱼跟电子游戏网站怎么做宁安市建设局网站