MySQL用户管理及c语言链接

1.MySQL用户管理

1.1用户信息

MySQL中的用户的信息都存储在系统数据库mysql的user表中。表中host字段表示这个用户可以从哪个主机登录,如果是localhost,表示只能从本地登录。user字段是用户名。authentication_string字段是用户加密后的密码。

1.2用户的增删查改

查询用户使用select语句查询MySQL系统自带的mysql数据库的user表即可。

创建用户使用:create user '用户名'@'登录主机/ip' identified by '密码'; 即可。MySQL中涉及password的语句都不会存储在历史命令中。

删除用户使用:drop user '用户名'@'主机名'; 即可。修改用户密码使用:set password=password('新密码'); 即可。

1.3数据库的权限

数据库的权限大致如下。

权限 列 上下文
CREATE Create_priv 数据库、表或索引
DROP Drop_priv 数据库或表
GRANT OPTION Grant_priv 数据库、表或保存的程序
REFERENCES References_priv 数据库或表
ALTER Alter_priv 表
DELETE Delete_priv 表
INDEX Index_priv 表
INSERT Insert_priv 表
SELECT Select_priv 表
UPDATE Update_priv 表
CREATE VIEW Create_view_priv 视图
SHOW VIEW Show_view_priv 视图
ALTER ROUTINE Alter_routine_priv 保存的程序
CREATE ROUTINE Create_routine_priv 保存的程序
EXECUTE Execute_priv 保存的程序
FILE File_priv 服务器主机上的文件访问
CREATE TEMPORARY TABLES Create_tmp_table_priv 服务器管理
LOCK TABLES Lock_tables_priv 服务器管理
CREATE USER Create_user_priv 服务器管理
PROCESS Process_priv 服务器管理
RELOAD Reload_priv 服务器管理
REPLICATION CLIENT Repl_client_priv 服务器管理
REPLICATION SLAVE Repl_slave_priv 服务器管理
SHOW DATABASES Show_db_priv 服务器管理
SHUTDOWN Shutdown_priv 服务器管理
SUPER Super_priv 服务器管理

1.4用户的权限

在默认情况下root拥有所有数据库的所有权限。但是新创建的普通用户在默认情况下只能查看个别系统自带的数据库,普通用户想要获取权限只能找root用户来给他赋权:grant 权限列表 on 库.对象名 to '用户名'@'登录位置'; 。权限列表的多个权限用逗号隔开,也可以使用all来代指所有权限。 root也可以回收普通用户的权限:revoke 权限列表 on 库.对象名 from '用户名'@'登录位置';

2.mysql connect

c语言链接mysql的过程大致分为以下步骤:1.创建MSQL对象。2.链接mysql服务。3.执行sql语句。4.如果是selec查询语句就需要创建MYSQL_RES结果集对象。5.获取结果集的数量。6.循环打印结果集。7.释放结果集对象。8.关闭mysql链接。如果是其他的sql语句就不需要4567步。

步骤 操作 关键函数 说明
1 创建 MYSQL 对象 mysql_init() 分配和初始化 MYSQL 对象
2 连接 MySQL 服务 mysql_real_connect() 连接服务器,传入主机、用户、密码、数据库名等参数
3 执行 SQL 语句 mysql_query() 或 mysql_real_query() 执行任意 SQL(增删改查)
4 判断是否为 SELECT mysql_field_count() 检查受影响的行数或返回结果集
5 创建结果集对象 mysql_store_result() 或 mysql_use_result() 仅对返回结果的查询(如 SELECT)
6 获取结果集数量 mysql_num_rows()/ mysql_num_fields/ mysql_fetch_fields 返回结果集中的行数,列数,行名
7 循环打印/处理结果集 mysql_fetch_row() 逐行获取数据,直到返回 NULL
8 释放结果集 mysql_free_result() 释放 MYSQL_RES 对象
9 关闭连接 mysql_close() 关闭 MYSQL 连接句柄
复制代码
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;

// 1. 创建 MYSQL 对象
conn = mysql_init(NULL);

// 2. 连接 MySQL
if (!mysql_real_connect(conn, "localhost", "user", "pass", "db", 0, NULL, 0)) {
    // 连接失败处理
}

// 3. 执行 SQL
if (mysql_query(conn, "SELECT * FROM table")) {
    // 执行失败处理
}

// 4. 判断是否是 SELECT 类查询
res = mysql_store_result(conn);
if (res) {
    // 5. 获取行数(可选)
    int num_rows = mysql_num_rows(res);
    
    // 6. 循环打印结果集
    while ((row = mysql_fetch_row(res))) {
        // 处理每一行数据
        printf("%s\n", row[0]);
    }
    
    // 7. 释放结果集
    mysql_free_result(res);
} else {
    // 非 SELECT 查询(INSERT/UPDATE/DELETE 等)
    printf("影响行数: %lu\n", mysql_affected_rows(conn));
}

// 8. 关闭连接
mysql_close(conn);
相关推荐
数据库小学妹14 分钟前
MySQL时区问题排查:TIMESTAMP和DATETIME的区别与跨时区对账踩坑
数据库·mysql·datetime·时区·timestamp·跨时区对账
多客:duokelijie1 小时前
婚恋交友小程序合规梳理:上线运营需要准备哪些资质与许可手续?
后端·mysql·微信小程序·前端框架·uni-app·php·持续部署
L00114 小时前
MySQL5.7 DATE 字段无法设置默认日期?用触发器搞定|个人任务清单项目实战
mysql
不像程序员的程序媛16 小时前
导出mysql数据结构
数据库·mysql
鱼很腾apoc16 小时前
【MySQL】第4期 用户管理与 C 语言连接编程详解
linux·服务器·c语言·mysql·connector/c
郭萌69617 小时前
多商户平台的分销佣金:为什么同一笔订单,换个时间跑会算出另一个人
mysql·php
库库的数据库笔记17 小时前
金融核心交易系统的数据库国产信创改造该如何做?
大数据·数据库·分布式·mysql·oracle·金融·数据库架构
Linux实战笔记18 小时前
MySQL 索引失效的三种典型场景与 EXPLAIN 分析
mysql·索引失效·explain·执行计划·sql 调优
这个DBA有点耶18 小时前
连接数没满,应用却连不上数据库——TCP backlog溢出与somaxconn的隐藏限制
数据库·mysql·代码规范
小羊没烦恼!18 小时前
C#综合揭秘——Entity Framework 并发处理详解
java·开发语言·前端·javascript·数据库·mysql·c#