1.service mysql status 可以查看服务器(数据库)是否启动
数据库在开机默认情况下就是启动的
启动数据库:service mysql start
重新启动数据库:service mysql restart
停止数据库:service mysql stop
本地连接数据库:mysql -uroot -p密码
远程连接数据库:mysql -uroot -h192.168.0.0 -p密码
2.show databases;可以显示都有哪些数据库
3.root和stu2就是用户名,%表示远程登录,localhost表示本地登录
在mysql这个数据库中有一个user表,里面保存了用户的信息
create user ‘root’@‘%’ indentified WITH mysql_native_password by ‘sp20010212’;
4.当通过stu2用户连接上mysql数据库以后,为什么显示出来的数据库信息只有一个呢?而在通过root用户连接上mysql数据库以后会显示出很多数据库呢?
这是因为权限的问题,我们只是创建了一个用户,只是可以登录上数据库,但是现在没有权限去访问任何数据库,所以要给用户进行授权,授权的时候不可能超过权限用户的权限范围,最高也就是给新用户授权和本用户一样的权限
- . * 的意思就是在所有数据库的所有表
all privileges 的意思就是所有权限
可以看到一开始通过stu2用户登录的数据库中并没有sun这个数据库,在通过给stu2授权以后,可以看到sun这个数据库了,授予的权限是sun.*,意思就是对数据库sun中的所有表都有操作权限
这里授予的all表示可以进行增删改查,也可以授予单个权限,比如select,update,drop,alter
当最初只授予了select权限时,执行grant update on sun.* to ‘stu2’@‘%’;时原来的select权限还在,增加了update权限
这时root可以访问到的内容stu2也可以访问到
show grants for stu2; 可以查看stu2的权限
revoke all on sun.* from ‘stu2’@‘%’; 可以删除远程stu2用户登录对数据库的所有权限
下图删除了本地登录localhost的stu2用户对c213db数据库所有表的权限
5.删除用户
drop user ‘name’@‘localhost’;
drop user stu2;如果后面不加本地登录还是远程登录的话,默认删除的是远程登录的
6.注意编译的时候要加-lmysqlclient
gcc -o main main.c -lmysqlclient
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <mysql/mysql.h>
int main()
{
MYSQL mysql_conn;
MYSQL* mysql = mysql_init(&mysql_conn);//mysql实际上指向的就是mysql_conn
if(mysql == NULL)
{
printf("init error\n");
exit(0);
}
mysql = mysql_real_connect(mysql,"localhost","root","sp20010212","sun","3306"