04.MySQL——用户管理

news2024/11/25 6:55:22

用户管理

用户管理的价值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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;
  }

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【贪心算法Part03】| 1005.K次取反后最大化的数组和、134.加油站、135.分发糖果

目录 &#x1f388;LeetCode1005.K次取反后最大化的数组和 &#x1f388;LeetCode134.加油站 &#x1f388;LeetCode135.分发糖果 &#x1f388;LeetCode1005.K次取反后最大化的数组和 链接&#xff1a;1005.K次取反后最大化的数组和 给你一个整数数组 nums 和一个整数 k…

31,list容器

31.1list基本概念 功能&#xff1a;将数据进行链式存储 链表(list)是一种物理存储上非连续的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接实现的 链表的组成&#xff1a;链表由一系列结点组成 结点的组成&#xff1a;一个是存储数据元素的数据域&#xf…

【剧前爆米花--web】HTTP协议格式详解以及构造

作者&#xff1a;困了电视剧 专栏&#xff1a;《JavaEE初阶》 文章分布&#xff1a;这是一篇关于HTTP协议的文章&#xff0c;在这篇文章中我会说明HTTP协议格式以及相关的构造&#xff0c;希望对你有所帮助&#xff01; 目录 HTTP协议 HTTP协议格式 HTTP请求 HTTP响应详情…

拿了 7 个大厂 offer,我有话说

我有一个朋友&#xff0c;举办了一个分享会。他春招期间收割了阿里、京东、美团、拼多多、网易、腾讯云智等多家公司的实习 offer。 他最近从一家A大厂实习换到了另外一家B大厂实习&#xff0c;分享会长达100分钟&#xff0c; 共解答了 40 多个问题。 我也从中抽取一些比较有共…

一个小技巧,分分钟搞定新零售!

新零售模式的兴起带来了线上线下销售渠道的整合&#xff0c;而自动售货机作为新零售模式的一种重要形式&#xff0c;提供了便捷的自助购物体验。 自动售货机作为新零售模式的一种典型应用&#xff0c;以其便利性、快捷性和24小时无人值守的特点&#xff0c;深受消费者和商家的青…

MySQL数据库 【增删改查】

目录 一、新增 指定列插入 一次插入多个数据 二、查询 1、全列查询 2、指定列查询 3、查询字段为表达式 4、查询的时候给列名/表达式 指定别名 5、查询时去重 6、排序查询 7、条件查询 8、模糊查询 9、空值查询 10、分页查询 三、修改 四、删除 SQL 最核心…

python如何知道你的导包在哪/site-package在哪/anaconda中的模块文件在哪

参考: https://stackoverflow.com/questions/31003994/where-is-site-packages-located-in-a-conda-environment anaconda虚拟环境中的site-package在如下目录&#xff0c;/opt/conda/envs/env_cp37_STAGATE_TF/lib/python3.7/site-packages/。 基于寻找你导包的物理位置在哪…

婚纱照主题定义

文章目录 前言关于我们听我们说关于风格&#xff1a;1、主纱&#xff08;内&#xff09;2、工笔画&#xff08;内&#xff09;3、个性潮拍 &#xff08;内&#xff09;4、森系&#xff08;外&#xff09;5、园林&#xff08;外&#xff09;写在最后 前言 非常感谢在今生有约婚…

doris恢复库恢复表

今天眼疾手快 不小心删了公司生产环境的表 而且碰巧这个数据没有备份的 当时哥们就呆住 还好doris升级过1.2 刚推出了恢复数据的功能~~~~~这里给老天爷磕一个了~~~~~~ 数据删除恢复 Doris为了避免误操作造成的灾难&#xff0c;支持对误删除的数据库/表/分区进行数据恢复&…

什么是DIN连接器 DIN连接器的应用

一、什么是DIN连接器 DIN连接器是一种遵循德国国家标准化组织制定的连接器标准的电子连接器。它采用圆形外观和标准化的接口设计&#xff0c;以确保与其他符合DIN标准的设备和连接器的兼容性。DIN连接器通常由插头和插座两部分组成&#xff0c;通过插拔操作实现电路的连接和断开…

面试时被问到职业规划,怎样回答才最加分?

很多人被问到「职业规划」这个问题的时候&#xff0c;都会很………纠结&#xff1a; 表现得太踏实苦干了&#xff0c;可能会让人觉得没有什么进取心。 职业目标描述得太明确&#xff0c;又会被质疑太在意外部激励而缺乏内部动机。 感觉怎么说都会错&#xff0c;说多一句都是…

Java 中 synchronized 的优化操作:锁升级、锁消除、锁粗化

由 并发编程中常见的锁策略 总结可知&#xff0c;synchronized 具有以下几个特性&#xff1a; 开始时是乐观锁&#xff0c;如果锁冲突频繁&#xff0c;就转换为悲观锁。开始是轻量级锁实现&#xff0c;如果锁被持有的时间较长&#xff0c;就转换成重量级锁。实现轻量级锁时&am…

预处理详解(二)---#define 定义宏 + 宏的使用 + 宏和函数的区别

文章目录 #define 定义标识符#define 定义宏#define 的替换规则带副作用的宏参数宏和函数的区别#undef 的作用冷门知识点&#xff1a;#与## #define 定义标识符 #define定义标识符的格式如下&#xff1a; #define MAX 100 #define reg register//懒人觉得register太长了这些被…

Virus Total 曝数据泄露大事件:涉及多国情报部门

The Hacker News 网站披露&#xff0c;可疑文件和病毒在线检测平台 VirusTotal 曝出数据泄露事故&#xff0c;一名员工无意中将部分 VirusTotal 注册客户的姓名、电子邮件地址等敏感数据信息上传到了恶意软件扫描平台&#xff0c;此举导致约 5600 名用户数据泄露。 据悉&#x…

Display

Pipeline Dataloader和后面网络训练是解耦的&#xff0c;Dataloader负责把数据读出来变成tensor&#xff0c;网络&#xff08;继承nn.Module父类&#xff09;负责把这tensor算成最后的输出。在网络传播的过程中&#xff0c;hook记录保留中间数据&#xff0c;用于display作图。…

CSS——基础知识及使用

CSS 是什么 CSS是层叠样式表 (Cascading Style Sheets)的简写.CSS 能够对网页中元素位置的排版进行像素级精确控制, 实现美化页面的效果. 能够做到页面的样式和结构分离。 基本语法规范 选择器 { 一条/N条声明 } 选择器决定针对谁修改 (找谁)声明决定修改啥. (干啥)声明的…

PP速度模式应用

应用场景要求&#xff1a; 电机在变化的负载下&#xff0c;保持设定的速度时&#xff0c;需要使用速度模式。 在速度模式下&#xff0c;电机速度由发送到电机的电压控制。但是要改变电机的速度&#xff08;加速或减速&#xff09;需要增加或减小电机转矩&#xff0c;因此在速度…

Stable Diffusion - 编辑生成 (OpenPose Editor) 相同人物姿势的图像

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/131818943 OpenPose Editor 是 Stable Diffusion 的扩展插件&#xff0c;可以自定义人物的姿势和表情&#xff0c;以及生成深度、法线和边缘图等信…

rt-thread rtc设备驱动开发

基于pico rtc设备驱动开发 I/O设备框架RTC设备功能配置——启用Soft RTC功能配置——启用NTP时间自动同步功能配置——启用硬件RTC RT-Thread 的 RTC &#xff08;实时时钟&#xff09;设备为操作系统的时间系统提供了基础服务。应用层对于 RTC 设备一般不存在直接调用的 API &…