当前位置: 首页>数据库>正文

mariadb关闭binlog mariadb怎么退出



Step 1 安装:

安装:yum -y install mariadb*

启动:systemctl start mariadb.service

可用:systemctl enable mariadb.service

进入:mysql

退出:exit

Step 2 密码:

由于首次安装没有设置密码,再次进入数据库的时候会报以下错误,

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)  
Enter current password for root (enter for none): 


即便输入密码还是会报一样的错误!!

查资料有人推荐使用 

mysqladmin -u root password 'root'


命令修改密码,但是并不奏效。


遂在万能的百度上找到了这两个方法修改默认密码


方法一:
1.关闭maria

# service mysqld stop


2.屏蔽权限
  

# mysqld_safe --skip-grant-table


   屏幕出现: Starting demo from .....
3.新开终端输入

# mysql -u root mysql 
 
   mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root'; 
 
   mysql> FLUSH PRIVILEGES; 
 
   mysql> \q


4.关闭2步中的终端


方法二:
1.关闭maria

# service mysqld stop


2.屏蔽权限

# mysqld_safe --skip-grant-table 
 
   屏幕出现: Starting demo from .....


3.新开起一个终端输入

# mysql -u root mysql 
 
   mysql> delete from user where USER=''; 
 
   mysql> FLUSH PRIVILEGES; 
 
   mysql> \q

4.关闭2步中的终端



方法一完美的解决了问题,然后登陆服务器


[root@localhost ~]# mysql -uroot -p  
 Enter password:



Step 3 C++连接数据库:

由于安装数据库是为了游戏服务器服务,我们的服务器是用C++搭建的,这时候就需要C++连接数据库进行数据读取。

包含数据库头文件:#include "mysql.h"

创建数据库底层接口封装类:class CDBBase {};

运行代码......

报错:头文件mysql.h不存在!

原因:如果想包含数据库头文件不加路径需要把默认头文件移到CentOS默认路径下

解决:

方法一:直接包含mysql头文件位置:#include "/usr/include/mysql/mysql.h"  

方法二:把mysql头文件移动到默认文件夹 // TODO:

运行代码......

报错:undefined reference to 'mysql_init'

mysql_init等数据库函数的具体实现,虽然我们正确的包含了头文件,但是函数实现所在的库文件还无法连接。

解决:在makefile文件末尾加上:-L/usr/lib64/mysql -lmysqlclient

Step 4 C++读取数据:

MariaDB(Mysql)数据提供的C接口默认将数据存到了一个char*型的二维数组里面。

所以我们在程序中定义了下面的结构体用以接收数据:

#define RESULT_ROW_MAX10// 查询结果行数最大值
 #define RESULT_COLUME_MAX 10// 查询结果列数最大值
 struct STQueryResult // 存储通用的返回结果
 {
STQueryResult()
{
iRow = 0;
iColume = 0;
memset(sResult, 0, RESULT_ROW_MAX*RESULT_COLUME_MAX);
}
int iRow;
int iColume;
char *sResult[RESULT_ROW_MAX][RESULT_COLUME_MAX];
 };

二维数组的目的是为了存储多条数据结果。

如果数据某个结果为int,需要按一下方式转码读取:

char* pcID = stResult.sResult[0][0];
 for ( int i = 0; i < strlen(pcID); i++ )
 _stLogin.iID = _stLogin.iID*10 + ( pcID[i]-'0' )


其中*10是因为int型中的每一位占char数组的一个位置,按char位取出之后只是int数据个十百千位的数字。


其中-'0'是因为每一个int个十百千位的数据是按照ascii码中字符的'0'对应的值进行存储的。


https://www.xamrdz.com/database/64m1939638.html

相关文章: