#create view 视图名 as select语句;
#create view v_ename_dname as select ename, dname
#update v_ename_dname set dname='sales' where ename='CLARK'; //修改视图
#mysql> update EMP set deptno=20 where ename='JAMES'; //-- 修改基表
drop view 视图名;
mysql 添加用户、修改权限,修改登录权限ip
如果我们只能使用root用户,这样存在安全隐患。这时,就需要使用MySQL的用户管理。
查看用户信息
创建用户
删除用户
修改用户密码
给用户授权
回收用户的权限。
用户信息:MySQL中的用户,都存储在系统数据库mysql的user表中
#mysql> use mysql;
#mysql> select host,user,authentication_string from user;
host
: 表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆user
: 用户名authentication_string
: 用户密码通过password函数加密后的*_priv
: 用户拥有的权限
#create user '用户名'@'登陆主机/ip' identified by '密码';
//示例
#mysql> create user 'comeon'@'localhost' identified by '12345678';
#drop user '用户名'@'主机名'
//示例
#mysql> drop user 'comeon'@'localhost'; //--删除用户
#set password=password('新的密码');
#set password for '用户名'@'主机名'=password('新的密码');
# flush privileges;
MySQL数据库提供的权限列表:
#grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码']
#grant select, delete, create on ....
#grant all [privileges] on ... //-- 表示赋予该用户在该对象上的所有权限
*.*
: 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)库.*
: 表示某个数据库中的所有数据对象(表,视图,存储过程等)
#revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';
//示例
#mysql> revoke all on test.* from 'comeon'@'localhost';
其中 include 包含所有的方法声明, lib 包含所有的方法实现(打包成库)。
mysql_get_client_info()
函数,来验证我们的引入是否成功。#include
#include
int main()
{
printf("mysql client Version: %s\n", mysql_get_client_info());
return 0;
}
# gcc -o test test.c -I./include -L./lib -lmysqlclient
#export LD_LIBRARY_PATH=./lib
要使用库,必须先进行初始化!
MYSQL *mysql_init(MYSQL *mysql);
。
初始化完毕之后,必须先链接数据库,在进行后续操作。(mysql网络部分是基于TCP/IP的)
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);
下发mysql命令mysql_query
int mysql_query(MYSQL *mysql, const char *q);
string s1 = "select * from table";
s1.c_str()作为第二个参数
获取执行结果mysql_store_result
MYSQL_RES *mysql_store_result(MYSQL *mysql);
mysql_num_rows
my_ulonglong mysql_num_rows(MYSQL_RES *res);
mysql_num_fields
unsigned int mysql_num_fields(MYSQL_RES *res);
mysql_fetch_fields
unsigned int mysql_num_fields(MYSQL_RES *res);
int fields = mysql_num_fields(res);
MYSQL_FIELD *field = mysql_fetch_fields(res);
int i = 0;
for(; i < fields; i++)
{
cout<<field[i].name<<" ";
}
cout<<endl;
mysql_fetch_row
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);
i = 0;
MYSQL_ROW line;
for(; i < nums; i++)
{
line = mysql_fetch_row(res);
int j = 0;
for(; j < fields; j++)
{
cout<<line[j]<<" ";
}
cout<<endl;
}
mysql_close
void mysql_close(MYSQL *sock);