Linux下的MySQL入门
本笔记记录了在Linux RedHat 6.5 (32bit)下通过rpm的方式安装MySQL 5.7.18的过程。
一、下载MySQL安装包。
上MySQL官网点击Download,下载mysql-5.7.18-1.el5.i686.rpm-bundle.tar。
二、Linux下的安装。
1. 检查下linux是不是已经安装了MySQL
#rpm -qa | grep –i mysql
#mysql-libs-5.1.71-el6.i686
如果安装了先卸载旧的版本
#yum -y remove mysql
#rpm –e –nodepsmysql-libs-5.1.71-el6.i686
2.解压安装包
#tar –xf mysql-5.7.18-1.el5.i686.rpm-bundle.tar
3.在解压的目录下,直接安装所有安装包:
#rpm –i *.rpm
这时提示test这个安装包无法安装,(缺少PERL,不太懂)可以先将它从该目录中移走或删除。
#mv./mysql-community-test-5.7.18-1.el5.i686.rpm /home/wayne/MySQL
重新全部安装。不出意外安装成功。
三、启动MySQL
1.启动服务:
#service mysqld start
2.登录:
#mysql –u root –p
初次登录密码为空。可能出现的错误:access denied for user ‘root’@’localhost’
解决办法:打开配置文件:
#vi /etc/my.cnf
在文件末尾添加:skip-grant-tables.
保存后重启mysqld服务:
#service mysqld restart;
3.修改密码:用户密码信息在mysql数据库里。
mysql> use mysql
mysql> update user setpassword=password('12345') where user='root';
mysql> flushprivileges;
4.设置允许远程登录
mysql> use mysql;
mysql> selecthost,user,password from user;
mysql> update user sethost='%' where user='root' and host='localhost';
mysql> flushprivileges;
mysql> exit;
5.开机自启动
#chkconfig mysqld on
四、MySQL基本操作
1.显示数据库:
mysql > show databases;
2.选择数据库:
mysql > use 数据库名;
3.显示数据库中的表
mysql > show tables;
4.显示数据表结构
mysql > describe 表名;
5.显示表中记录
mysql > select * from 表名;
6.建库:
mysql > create database 库名;
7.建表:
mysql > create table 表名(字段列表)如:
mysql > create table students(
->stu_num char(20) not null,
->stu_namechar(10) not null,
->stu_ageint not null,
->stu_scoreint,
->primarykey (stu_num));
8.增加记录
mysql > insert into students values(“13121233”, “wayne”,“27”, ”95”);
9.修改记录:
mysql > update students set stu_score=’95’ wherestu_name = ‘wayne’;
10.删除记录:
mysql > delete from students where stu_name = ‘wayne’;
11.删除表:
mysql > drop table 表名;
12.删除库:
mysql >drop database 库名;
13.数据库授权:
mysql >grant select on 库名.* to 用户名@登录主机 identified by “密码”;
mysql >grant select,insert,update,delete on wayne.* touser001@”%” identified by “12345”;
五、C++应用
在环境搭建完成之后,创建一个wayne的数据库,并创建一个students的表,表中按照上面的方法创建若干字段并添加记录:
mysql >create database wayne;
mysql > use wayne;
mysql > create table students(
->stu_num char(20) not null,
->stu_namechar(10) not null,
->stu_ageint not null,
->stu_scoreint,
->primarykey (stu_num));
mysql > insert into students values(“13121233”, “wayne”,“27”, ”100”);
mysql > insert into students values(“13121380”, “Huihui”,“26”, ”97”);
调用mysql封装的相关函数即可实现相关操作:
#include<iostream>
#include<mysql/mysql.h>
usingnamespace std;
intmain()
{
cout<<"hello,Linux!\n"<<endl;
MYSQL *connection;
MYSQL_RES *results;
MYSQL_ROW row;
connection = mysql_init(NULL);
if(NULL == connection)
{
cout<<"initerror:"<<mysql_error(connection);
exit(1);
}
else
cout<<"initsuccess!"<<endl;
connection =mysql_real_connect(connection,"localhost","root","12345","wayne",0,NULL,0);
if(NULL == connection)
{
cout<<"connecterror:"<<mysql_error(connection)<<endl;
exit(1);
}
else
cout<<"connectsuccess!"<<endl;
if(mysql_query(connection, "select *from students"))
{
cout<<"QueryError:"<<mysql_error(connection)<<endl;
exit(1);
}
else
{
results =mysql_use_result(connection);
for(int i=0;i<mysql_field_count(connection); i++)
{
row = mysql_fetch_row(results);
if(row <= 0)
{
break;
}
for(int j=0;j<mysql_num_fields(results); j++)
{
cout<<row[j]<<"";
}
cout << endl;
}
mysql_free_result(results);
}
mysql_close(connection);
return 1;
}
数据库的mysql支持在usr/include/mysql路径下;另外在执行g++时可能会遇到不认识这些库函数的的问题,解决办法是手动添加上支持库文件:
//makefile:
g++ -o TestMySQL TestMySQL.cpp-L/usr/lib/mysql –lmysqlclient
可以把这句话写成Makefile,注意开始添加一个tab。执行结果如下: