主要内容
- 卸载残留MySQL
- 安装MySQL
- 解决中文乱码问题
- C语言作为宿主语言操作MySQL
- 介绍一款MySQL管理软件
MySQL安装配置
一、查看电脑中是否已有MySQL
mysql -V
二、卸载原有MySQL
<如果第一步查询发现没有则跳过此步骤直接开始第三步>
root权限下执行
apt-get autoremove mysql-server
apt-get remove mysql-common
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
最后一步会出现如下界面,选是
卸载完成
三、安装
sudo apt-get install mysql-server mysql-client
四、设置密码
1、查看debian.cnf并记录其中user和password字段内容
cat /etc/mysql/debian.cnf
2、以默认账号登入MySQL
注意将debian-sys-maint替换为你自己上一步保存的user中的内容
mysql -u debian-sys-maint -p
3、输入密码敲回车登录成功<注意linux下输入密码是并不显示>,出现下面界面则表示登录成功
4、依次执行以下命令配置新密码<注意分号>
use mysql;
select host,user,plugin,authentication_string from user;
注意将新密码替换成你自己的密码
update user set plugin="mysql_native_password",authentication_string=password('新密码') where user="root";
FLUSH PRIVILEGES;
exit
5、尝试用新密码登录
mysql -u root -p
五、中文乱码问题解决
可以每次创建数据库时加上默认字符编码,也可根据下面方式一次性改好
1、登入mysql使用如下命令查看MySQL编码发现其中两个不是utf8
SHOW VARIABLES LIKE 'char%';
2、 使用vim或gedit打开/etc/mysql/mysql.conf.d下的mysqld.cnf在lc-messages-dir = /usr/share/mysql 语句后添加 character-set-server=utf8 语句
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
3、在终端中输入如下命令重启MySQL服务
/etc/init.d/mysql restart
4、登入mysql输入如下命令发现修改成功
SHOW VARIABLES LIKE 'char%';
C语言连接mysql
1、安装mysql函数库
sudo apt-get install libmysqlclient-dev
2、登入mysql在用sql语句创建测试用数据库数据库info,并建表people包括id与name两个字段id为主键
创建数据库info
CREATE SCHEMA `info` ;
创建表people
CREATE TABLE `info`.`people` (
`id` INT NOT NULL,
`name` VARCHAR(45) NULL,
PRIMARY KEY (`id`));
插入测试数据
INSERT INTO `info`.`people` (`id`, `name`) VALUES ('1', '赵满刚');
3、使用vim创建mysql_test.c,写入代码<代码在文章最后>
vim mysql_test.c
4、编译执行<注意连接库 -l mysqlclient>
介绍一款图形化界面中的mysql管理软件 MySQL workbench
mysql_test.c源码
//filename: mysql_test.c
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<mysql/mysql.h>
int main(void)
{
char *sql;
sql="SELECT * FROM people;";
int res;//执行sql语句后的返回标志
MYSQL_RES *res_ptr;//指向查询结果的指针
MYSQL_FIELD *field;//字段结构指针
MYSQL_ROW result_row;//按行返回查询信息
int row,column;//查询返回的行数和列数
MYSQL *conn;//一个数据库链接指针
int i,j;
//初始化连接句柄
conn = mysql_init(NULL);
if(conn == NULL) { //如果返回NULL说明初始化失败
printf("mysql_init failed!\n");
return EXIT_FAILURE;
}
//进行实际连接
//参数 conn连接句柄,host mysql所在的主机或地址,user用户名,passwd密码,database_name数据库名,后面的都是默认
conn = mysql_real_connect(conn,"localhost","root","Z001221z","info",0,NULL,0);
if (conn) {
printf("Connection success!\n");
} else {
printf("Connection failed!\n");
}
mysql_query(conn,"set names utf8");//防止乱码。设置和数据库的编码一致就不会乱码
res = mysql_query(conn,sql);//正确返回0 sql 里面sql语句
if(res) {
perror("my_query");
mysql_close(conn);
exit(0);
} else{
//把查询结果给res_ptr
res_ptr = mysql_store_result(conn);
//如果结果不为空,则输出
if(res_ptr) {
column = mysql_num_fields(res_ptr);
row = mysql_num_rows(res_ptr);
printf("查到%d行\n",row);
//输出结果的字段名
for(i = 0;field = mysql_fetch_field(res_ptr);i++) {
printf("%10s",field->name);
}
puts("");
//按行输出结果
for(i = 1;i < row+1;i++){
result_row = mysql_fetch_row(res_ptr);
for(j = 0;j< column;j++) {
printf("%10s",result_row[j]);
}
puts("");
}
}
}
//退出前关闭连接
mysql_close(conn);
return 0;
}