04.MySQL——用户管理

用户管理

用户管理的价值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gAVn4NVf-1689765963103)(C:\Users\11794\AppData\Roaming\Typora\typora-user-images\image-20230719162348005.png)]

用户

用户信息

MySQL中的用户,都存储在系统数据库mysql的user表中

use mysql;
select host,user,authentication_string from user;
  • host: 表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆
  • user: 用户名
  • authentication_string: 用户密码通过password函数加密后的

创建用户

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

删除用户

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

修改用户密码

set password=password('新的密码');  //自己改自己密码
set password for '用户名'@'主机名'=password('新的密码') //root用户修改指定用户的密码

给用户授权

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

grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码']

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

在这里插入图片描述

  • 权限列表,多个权限用逗号分开 all [privileges] 表示赋予该用户在该对象上的所有权限
  • . : 代表本系统中的所有数据库的所有对象
  • 库.* : 表示某个数据库中的所有数据对象
  • identified by可选。如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户
  • 如果发现赋权限后,没有生效,执行如下指令: flush privileges;

回收权限

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

mysql connect

使用C语言连接mysql,需要使用mysql官网提供的库,在官网上下载合适自己平台的mysql connect库

  • 使用的时候需要引入mysql的头文件
#include <mysql.h>
  • 其中 include 包含所有的方法声明, lib 包含所有的方法实现
  • 通过mysql_get_client_info()函数,来验证引入是否成功

mysql接口介绍

初始化mysql_init()

MYSQL* mysql_init(MYSQL* mysql);

链接数据库

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命令

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

读取结果

MYSQL_RES *mysql_store_result(MYSQL *mysql);
  • 该函数malloc了一片内存空间来存储查询过来的数据,所以一定要记的 free(result),不然是肯定会造成内存泄漏的。 执行完mysql_store_result以后,数据都存放在MYSQL_RES 变量中。

获取结果行数

longlong mysql_num_rows(MYSQL_RES *res);

获取结果列数

unsigned int mysql_num_fields(MYSQL_RES *res);

获取列名

MYSQL_FIELD* mysql_fetch_fields(MYSQL_RES *res);

获取结果内容

MYSQL_ROW mysql_fetch_row(MYSQL_RES* result); //按照行读取文件内容,自动更新行数
  • 返回一个MYSQL_ROW变量,MYSQL_ROW其实就是char ** ,可以当成一个二维数组来用。

关闭mysql链接

void mysql_close(MYSQL *sock);

案例

  // 该函数用来连接 mysqld 并执行mysql语句
  // 将执行sql语句后的Question内容传到第二个参数vector中
  bool QueryMySql(const std::string &sql, vector<Question> *out)
  {
      // 创建mysql句柄
      MYSQL *my = mysql_init(nullptr);
      // 连接数据库
      if(nullptr == mysql_real_connect(my, host.c_str(), user.c_str(),                                   passwd.c_str(),db.c_str(),port, nullptr, 0))
      { 
          return false; 
      }
      // 设置该链接的编码格式, 要不然会出现乱码问题
      mysql_set_character_set(my, "utf8");
      
      // 执行sql语句
      if(mysql_query(my, sql.c_str())!= 0)
      {
          return false;
      }
      // 提取结果
      MYSQL_RES *res = mysql_store_result(my);
      
      // 分析结果
      int rows = mysql_num_rows(res);     //获得行数量
      int cols = mysql_num_fields(res);   //获得列数量
      Question q;
      //定义Question临时结构体,保存问题信息,插入到vector中
      //导入问题的信息到q中
      for(int i = 0; i < rows; i++)
      {
          MYSQL_ROW row = mysql_fetch_row(res);
          q.id = row[0];  
          q.title = row[1];
          q.star = row[2];
          q.desc = row[3];
          q.header = row[4];
          q.tail = row[5];
          q.cpu_limit = atoi(row[6]);
          q.mem_limit = atoi(row[7]);               
          out->push_back(q);
      }

      // 关闭mysql连接
      mysql_close(my);
      return true;
  }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/41647.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

对Element DatePicker时间组件的封装,时间组件开始时间和结束时间绑定

背景 我们时常有时间范围选择&#xff0c;需要选择一个开始时间和一个结束时间给后端&#xff0c;但我们给后端的是两个字段&#xff0c; 分别是开始时间和结束时间&#xff0c;现在使用element绑定的值是一个数组&#xff0c;我们还要来回处理&#xff0c;很麻烦列表也的查询…

leaflet 沿河流流向显示河流名字

1.效果图&#xff1a; 2.代码块 首先需要借助一个插件3mapslab-Leaflet.streetlabels&#xff08;这个插件也可用于显示街道名字用的&#xff09; 插件可在leaflet官网上下载及案例&#xff01; --- layout: default ---<div idmap style"width:100%;min-height:30…

【数据结构】二叉树详解(1)

⭐️ 前言 ✨ 二叉树的概念性质 ⭐️ 二叉树链式结构的实现 结构定义&#xff1a; #include <stdio.h> #include <stdlib.h> #include <assert.h>typedef int BinaryTreeDataType;typedef struct BinaryTreeNode {BinaryTreeDataType value;struct Binary…

关于AES 和 BASE64 的理解

BASE64 首先 base64 是一种编码方式&#xff0c;它的字符集由64个不同字符组成&#xff08;A-Z、a-z、0-9和两个额外字符/&#xff09;&#xff0c;因此每个Base64字符都占用6个比特&#xff08;2^6 64&#xff09; Base64编码后的数据长度 4 * ceil(原始数据长度 / 3) 其中…

vue做移动端上拉加载 删除当前列表某个数据 保持当前状态 继续获取下一页不影响正常的数据

本文中使用vant组件的list列表制作的 当然主要是看这个难题的思路 不必计较用的什么组件库 换做其他的组件库 思路还是一样的 //主要思路是把点击删除的数据让后端置为false // 比如我请求了3页&#xff0c;一页10条数据 // 一共30条&#xff0c;我一条一条删除&#xff0c;点…

Redis : zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录

In file included from adlist.c:34:0: zmalloc.h:50:31: 致命错误&#xff1a;jemalloc/jemalloc.h&#xff1a;没有那个文件或目录 #include <jemalloc/jemalloc.h> 解决 : 如上图使用命令 make MALLOClibc

【EXCEL】数据录入的快捷键和正确格式

目录 0.环境 1.内容概述 2.具体内容 2.1数据录入换行换列的快捷键&#xff08;标准的数据输入方式&#xff09; 2.2日期的正确格式和使用&#xff08;标准日期格式与长日期&#xff09; 2.2.1 标准日期 2.2.2 长日期 2.2.3 显示当前日期和时间的快捷键 2.3百分比的正确…

FPGA adrv9002 4收4发板卡,支持NVME SATA EMMC 光口 FMC

板卡采用ADI 射频直采芯片ADRV9002 &#xff0c;支持4收4发支持外部本振 跳频 同时支持4X 10G光口对外传输&#xff0c;FMC扩展 。同时支持4X NVME接口&#xff0c;可以实时流盘&#xff0c;备份一路SAT A接口&#xff0c;板卡同时预留了EMMC&#xff0c;可以PS PL选通访问&…

C++ stack和queue 模拟实现

stack和queue 模拟实现 模拟栈实现模拟队实现 模拟栈实现 1 栈是一种容器适配器&#xff0c;专门设计用于后进先出的后进先出环境&#xff0c;在这种环境中&#xff0c;元素只从容器的一端插入和提取。 2 栈是作为容器适配器实现的&#xff0c;这些适配器是使用特定容器类的封装…

linux安装git

linux安装git 命令行安装方法下载安装配置git用户信息 命令行安装方法 Debian/Ubuntu&#xff1a;使用apt命令进行安装 sudo apt install git但是我安装遇到问题&#xff1a; 这是应为之前安装了搜狗拼音的原因&#xff0c;卸载即可 apt-get autoremove sogoupinyinapt-get …

23.JavaWeb-集群+Nginx+JMeter

1.集群概念 平时用的服务是的并发量是有限的&#xff0c;像tomcat只有不到500的并发量&#xff0c;不能满足高并发的需求&#xff0c;因此就采用了集群的方法&#xff0c;用多个服务器 当用户请求集群系统时&#xff0c;集群给用户的感觉就是一个单一独立的服务器&#xff0c;而…

基于SpringBoot+vue的民宿管理平台系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

JS-26 认识防抖和节流函数;自定义防抖、节流函数;自定义深拷贝、事件总线函数

目录 1_防抖和节流1.1_认识防抖和节流函数1.2_认识防抖debounce函数1.3_防抖函数的案例1.4_认识节流throttle函数 2_Underscore实现防抖和节流2.1_Underscore实现防抖和节流2.2_自定义防抖函数2.3_自定义节流函数 3_自定义深拷贝函数4_自定义事件总线 1_防抖和节流 1.1_认识防…

Failed to initialize NVML: Driver/library version mismatch (解决)

问题描述 运行nvidia-smi报错&#xff1a; Failed to initialize NVML: Driver/library version mismatch解决方法 只需一步&#xff1a;下载一个安装包&#xff0c;运行一个命令来重新安装cuda driver和cuda toolkit&#xff08;在一个包里&#xff09;。 到这里&#xff1…

听GPT 讲K8s源代码--pkg(六)

pkg/kubelet/cm 目录是 Kubernetes 源代码中的一个目录&#xff0c;包含了 kubelet 组件中的 ConfigMap 相关代码。 在 Kubernetes 中&#xff0c;ConfigMap 是一种用于存储非机密数据的 API 对象类型&#xff0c;它可以用来存储配置信息、环境变量、命令行参数等等。 kubelet …

学堂在线数据结构(上)(2023春)邓俊辉 课后题

The reverse number of a sequence is defined as the total number of reversed pairs in the sequence, and the total number of element comparisons performed by the insertion sort in the list of size n is: 一个序列的逆序数定义为该序列中的逆序对总数&#xff0c;…

OKCC呼叫中心的坐席监控功能有什么

最近很多客户都在跟我谈他们企业的电话客服工作量都非常大&#xff0c;虽然客服人员在服务时应该态度谦和&#xff0c;但是遇到难缠的客户&#xff0c;客服人员总有脾气忍不住的时候&#xff0c;言语上会带有情绪&#xff0c;这些客服人员会因为服务水平欠佳让客户不满意从而产…

【Elemnt-UI——el-popover点击出现多个弹框】

效果图 解决 :append-to-body"false"添加这个属性就可以了 <el-popoverv-model"item.contextmenuVisible"placement"bottom-end":append-to-body"false"trigger"click":visible-arrow"false"hide"item.…

236. 二叉树的最近公共祖先

题目描述&#xff1a; 主要思路&#xff1a; 利用dfs遍历树&#xff0c;依次判断节点是否为公共祖先节点。 class Solution { public:TreeNode* ans;bool dfs(TreeNode* root, TreeNode* p, TreeNode* q){if(!root)return false;bool ldfs(root->left,p,q);bool rdfs(root…

包的使用及其创建

文章目录 前言类名冲突完整的类路径创建包导入类包总结 前言 java语言中&#xff0c;包在整个管理过程中发挥了重要的作用。使用包&#xff0c;可以有效地管理繁多的类文件&#xff0c;解决了类名重复的问题。在类中应用包和权限修饰符&#xff0c;可以控制他人对类成员的方法的…