一.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