Linux和Mysql创建用户及授权方法与C连接Mysql的方法

来源:互联网 发布:淘宝怎么解绑银行卡 编辑:程序博客网 时间:2024/05/18 04:52

一.Linux创建用户方法

命令 作用 sudo adduser username 创建用户且在home目录下添加一个帐号目录 sudo useradd username 仅仅是添加用户,不会在home目录添加帐号 sudo passwd username password 修改用户的密码

二.Mysql用户创建方式

1.终端中使用以下命令并输入密码用root账户登入mysql
mysql -u root -p
2. 创建mysql用户,命令:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';

host 说明:指定在哪个机器上可以登录该账户

值 说明 localhost 本地登录 127.0.0.1 指定ip 127.0.0.1可登陆,多个用/分隔 % 任意主机都可登录,包括远程主机

3.给用户授权, 命令:
GRANT privileges ON databasename.tablename TO 'username'@'host';
privileges说明:给予账户的权限, 如SELECT , INSERT , UPDATE等,多个权限逗号分隔,给予所有权限可用ALL
databasename.tablename说明: 授权的数据库表,若授权所有数据库可用*.*
如需更改密码可用以下命令
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
各参数上有介绍
如需撤销权限可用以下命令
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
4.刷新数据库,命令:
flush privileges;
5.退出数据库
exit
此时你可以使用mysql -u username -p 登录你的数据库

三.C连接Mysql进行操作

1.首先需安装linux下操作mysql的依赖库,命令如下(注意!终端下的命令,不是mysql里!)
sudo apt-get install libmysqlclient-dev
2.测试代码

#include <stdio.h>  #include <stdlib.h>  #include <mysql/mysql.h>  //发生错误时,输出错误信息,关闭连接,退出程序  void error_quit(const char *str, MYSQL *connection)  {      fprintf(stderr, "%s : %d: %s\n",          str, mysql_errno(connection),          mysql_error(connection));      if( connection != NULL )          mysql_close(connection);      exit(1);  }  int main(int argc, char *argv[])   {      MYSQL *my_con = malloc( sizeof(MYSQL) );      MYSQL_RES *my_res;      MYSQL_FIELD *my_field;      MYSQL_ROW my_row;      int rows, i;      int res;      //连接数据库      mysql_init(my_con);       my_con = mysql_real_connect(my_con, "localhost", "username", "password",          "databasename", 0, NULL, CLIENT_FOUND_ROWS);      if( NULL == my_con )           error_quit("Connection fail", my_con);      printf("Connection success\n");      //向数据库中插入一条记录      res = mysql_query(my_con,           "insert into class1(name, age, birthday) value('abc', 52, NOW());");      if( res != 0 )           error_quit("Insert fail", my_con);      //返回的是表中被影响的行数      res = mysql_affected_rows(my_con);      printf("Inserted %d rows\n", res);      //获取整个表的内容      res = mysql_query(my_con, "select * from class1;");      if( res != 0 )          error_quit("Select fail", my_con);      my_res = mysql_store_result(my_con);      if( NULL == my_res )          error_quit("Get result fail", my_con);      //获取表的列数      rows = mysql_num_fields(my_res);      //获取并输出表头      my_field = mysql_fetch_fields(my_res);      for(i=0; i<rows; i++)          printf("%s\t", my_field[i].name);      printf("\n-------------------------------------\n");      //输出整个表的内容      while( 1 )      {          my_row = mysql_fetch_row(my_res);          if( NULL == my_row )              break;          for(i=0; i<rows; i++)          {              if( my_row[i] == NULL )                  printf("NULL\t");              else                  printf("%s\t", (char*)my_row[i]);          }          printf("\n");      }      //释放空间,关闭连接      mysql_free_result(my_res);      mysql_close(my_con);      free(my_con);      return 0;  }  

注:请自行替换代码中的用户名、密码、数据库名、表格等名称
编译方式,注意-lmysqlclient 参数
gcc example.c -lmysqlclient

欢迎在左侧联系我栏目中下载我开发的游戏,感谢您的支持!

0 0