CentOS使用MySQL的详细步骤,及C API编程
2013-01-26 10:57
387 查看
1.1执行yum命令安装MySQL
yum-yinstallmysqlmysql-server1.2把添加MySQL进开机启动项,并立即启动MySQL
chkconfig--levels235mysqldon/etc/init.d/mysqldstart
1.3打开mysqld
servicemysqldstart
1.4设置MySQLroot帐号密码(如果出了问题,比如Mysql
ERROR1045(28000):Accessdeniedforuser'root'@'localhost',请参考1.5)
mysql_secure_installation
NOTE:RUNNINGALLPARTSOFTHISSCRIPTISRECOMMENDEDFORALLMySQLSERVERSINPRODUCTIONUSE!PLEASEREADEACHSTEPCAREFULLY!
InordertologintoMySQLtosecureit,we'llneedthecurrent
passwordfortherootuser.Ifyou'vejustinstalledMySQL,and
youhaven'tsettherootpasswordyet,thepasswordwillbeblank,
soyoushouldjustpressenterhere.
Entercurrentpasswordforroot(enterfornone):<--输入系统root密码
OK,successfullyusedpassword,movingon...
SettingtherootpasswordensuresthatnobodycanlogintotheMySQL
rootuserwithouttheproperauthorisation.
Setrootpassword?[Y/n]<--ENTER
Newpassword:<--你的MySQLroot密码
Re-enternewpassword:<--你的MySQLroot密码
Passwordupdatedsuccessfully!
Reloadingprivilegetables..
...Success!
Bydefault,aMySQLinstallationhasananonymoususer,allowinganyone
tologintoMySQLwithouthavingtohaveauseraccountcreatedfor
Thisisintendedonlyfortesting,andtomaketheinstallation
goabitsmoother.Youshouldremovethembeforemovingintoa
productionenvironment.
Removeanonymoususers?[Y/n]<--ENTER
...Success!
Normally,rootshouldonlybeallowedtoconnectfrom'localhost'.This
ensuresthatsomeonecannotguessattherootpasswordfromthenetwork.
Disallowrootloginremotely?[Y/n]<--ENTER
...Success!
Bydefault,MySQLcomeswithadatabasenamed'test'thatanyonecan
Thisisalsointendedonlyfortesting,andshouldberemoved
beforemovingintoaproductionenvironment.
Removetestdatabaseandaccesstoit?[Y/n]<--ENTER
-Droppingtestdatabase...
...Success!
-Removingprivilegesontestdatabase...
...Success!
Reloadingtheprivilegetableswillensurethatallchangesmadesofar
willtakeeffectimmediately.
Reloadprivilegetablesnow?[Y/n]<--ENTER
...Success!
Cleaningup...
Alldone!Ifyou'vecompletedalloftheabovesteps,yourMySQL
installationshouldnowbesecure.
ThanksforusingMySQL!
1.5MysqlERROR1045(28000):Accessdeniedforuser'root'@'localhost'问题的解决
这种问题需要强行重新修改密码,方法如下:
/etc/init.d/mysqlstop(servicemysqldstop)
/usr/bin/mysqld_safe--skip-grant-tables
另外开个SSH连接
[root@localhost~]#mysql
mysql>usemysql
mysql>updateusersetpassword=password("123456")whereuser="root";
mysql>flushprivileges;
mysql>exit
pkill-KILL-tpts/0可将pts为0的**用户(之前运行mysqld_safe的用户窗口)强制踢出
正常启动MySQL:/etc/init.d/mysqlstart(servicemysqldstart)
1.6通过命令行操作数据库
1.6.1连接
mysql-u用户名-p密码
1.6.2常用命令
创建一个数据库:
mysql>createdatabase[databasename];
列出所有数据库:
mysql>showdatabases;
切换到一个数据库:
mysql>use[dbname];
显示一个数据库的所有表:
mysql>showtables;
查看数据表的字段格式:
mysql>describe[tablename];
删除一个数据库:
mysql>dropdatabase[databasename];
删除一个数据表:
mysql>droptable[tablename];
显示一个数据表的所有数据:
mysql>SELECT*FROM[tablename];
返回指定数据表的各列信息:
mysql>showcolumnsfrom[tablename];
使用值“whatever”过滤显示选定的某些行:
mysql>SELECT*FROM[tablename]WHERE[fieldname]="whatever";
显示所有包含name为”Bob”和phone
number为“3444444”的记录:
mysql>SELECT*FROM[tablename]WHEREname="Bob"ANDphone_number='3444444';
显示所有不包含name为”Bob”和phone
number为“3444444”的记录,并以phone_number字段排序:
mysql>SELECT*FROM[tablename]WHEREname!="Bob"ANDphone_number='3444444'orderbyphone_number;
显示所有的name以字母“bob”开头和phone
number为“3444444”的记录:
mysql>SELECT*FROM[tablename]WHEREnamelike"Bob%"ANDphone_number='3444444';
显示name以字母“bob”开头和phone
number为“3444444”的第1至第5条记录:
mysql>SELECT*FROM[tablename]WHEREnamelike"Bob%"ANDphone_number='3444444'limit1,5;
使用正则表达式查找记录:使用“正则表达式二进制”强制区分大小写:此命令查找以a开头的任何记录:
mysql>SELECT*FROM[tablename]WHERErecRLIKE"^a";
返回唯一不同的记录:
mysql>SELECTDISTINCT[columnname]FROM[tablename];
以升序或降序显示选定的记录:
mysql>SELECT[col1],[col2]FROM[tablename]ORDERBY[col2]DESC;
返回行数:
mysql>SELECTCOUNT(*)FROM[tablename];
统计指定列值的总和:
mysql>SELECTSUM(*)FROM[tablename];
联结表:
mysql>selectlookup.illustrationid,lookup.personid,person.birthdayfromlookupleftjoinpersononlookup.personid=person.personid=statementtojoinbirthdayin
persontablewithprimaryillustrationid;
新建一个用户:以root登录:切换到mysql数据库,创建用户,刷新权限:
#mysql-uroot-p
mysql>usemysql;
mysql>INSERTINTOuser(Host,User,Password)VALUES('%','username',PASSWORD('password'));
mysql>flushprivileges;
从unix命令行更改用户密码:
#[mysqldir]/bin/mysqladmin-uusername-hhostname.blah.org-ppassword'new-password'
从mysql命令行更改用户密码:以root登录,设置密码,更新权限:
#/etc/init.d/mysqlstop
#mysqld_safe--skip-grant-tables&
#mysql-uroot
mysql>usemysql;
mysql>updateusersetpassword=PASSWORD("newrootpassword")whereUser='root';
mysql>flushprivileges;
mysql>quit
#/etc/init.d/mysqlstop
#/etc/init.d/mysqlstart
root密码为空时,设置root密码:
#mysqladmin-urootpasswordnewpassword
更新root密码:
#mysqladmin-uroot-poldpasswordnewpassword
允许用户“bob”从localhost以密码“passwd”连接服务器:以root登录,切换mysql数据库:设置权限,更新权限:
#mysql-uroot-p
mysql>usemysql;
mysql>grantusageon*.*tobob@localhostidentifiedby'passwd';
mysql>flushprivileges;
为数据库db设置权限:以root登录,切换到mysql数据库,授予权限,更新权限:
#mysql-uroot-p
mysql>usemysql;
mysql>INSERTINTOdb(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv)VALUES('%','databasename','username','Y','Y','Y','Y','Y','N');
mysql>flushprivileges;
或者
mysql>grantallprivilegesondatabasename.*tousername@localhost;
mysql>flushprivileges;
更新已存在表的数据:
mysql>UPDATE[tablename]SETSelect_priv='Y',Insert_priv='Y',Update_priv='Y'where[fieldname]='user';
删除表中[fieldname]=‘whatever’的行:
mysql>DELETEfrom[tablename]where[fieldname]='whatever';
更新数据库的权限/特权:
mysql>flushprivileges;
删除列:
mysql>altertable[tablename]dropcolumn[columnname];
新增列到db:
mysql>altertable[tablename]addcolumn[newcolumnname]varchar(20);
更改列名:
mysql>altertable[tablename]change[oldcolumnname][newcolumnname]varchar(50);
增加唯一的列:
mysql>altertable[tablename]addunique([columnname]);
设置列值大点:
mysql>altertable[tablename]modify[columnname]VARCHAR(3);
删除唯一列:
mysql>altertable[tablename]dropindex[colmnname];
导入一个CSV文件到表:
mysql>LOADDATAINFILE'/tmp/filename.csv'replaceINTOTABLE[tablename]FIELDSTERMINATEDBY','LINESTERMINATEDBY'\n'(field1,field2,field3);
导出所有数据库到sql文件:
#[mysqldir]/bin/mysqldump-uroot-ppassword--opt>/tmp/alldatabases.sql
导出一个数据库:
#[mysqldir]/bin/mysqldump-uusername-ppassword--databasesdatabasename>/tmp/databasename.sql
从一个数据库导出一个表:
#[mysqldir]/bin/mysqldump-c-uusername-ppassworddatabasenametablename>/tmp/databasename.tablename.sql
从sql文件还原数据库(数据表):
#[mysqldir]/bin/mysql-uusername-ppassworddatabasename</tmp/databasename.sql
创建数据表例1:
mysql>CREATETABLE[tablename](firstnameVARCHAR(20),middleinitialVARCHAR(3),lastnameVARCHAR(35),suffixVARCHAR(3),officeidVARCHAR(10),useridVARCHAR(15),username
VARCHAR(8),emailVARCHAR(35),phoneVARCHAR(25),groupsVARCHAR(15),datestampDATE,timestamptime,pgpemailVARCHAR(255));
创建数据表例2:
mysql>createtable[tablename](personidint(50)notnullauto_incrementprimarykey,firstnamevarchar(35),middlenamevarchar(50),lastnamevarchar(50)default'bato');
1.7安装CAPI库及头文件
yuminstallmysql-devel
1.8例子
/*testsql.c
**AnexampletouseMYSQLCAPI
**Copyright2004CoonXu.
**Author:CoonXu
**Date:
05Nov2004
*/
#include<mysql.h>
#include<stdio.h>
intmain(){
MYSQLmysql;//needainstancetoinit
MYSQL_RES*res;
MYSQL_ROWrow;
char*query;
intt,r;
//connectthedatabase
mysql_init(&mysql);
if(!mysql_real_connect(&mysql,"localhost","mmim","mmim","test",0,NULL,0))
{
printf("Errorconnectingtodatabase:%s/n",mysql_error(&mysql));
}
elseprintf("Connected.../n");
//gettheresultfromtheexecutingselectquery
query="select*fromt1";
t=mysql_real_query(&mysql,query,(unsignedint)strlen(query));
if(t)
{
printf("Errormakingquery:%s/n",
mysql_error(&mysql));
}
elseprintf("[%s]made.../n",query);
res=mysql_store_result(&mysql);
while(row=mysql_fetch_row(res))
{
for(t=0;t<mysql_num_fields(res);t++)
{
printf("%s",row[t]);
}
printf("/n");
}
printf("mysql_free_result.../n");
mysql_free_result(res);//freeresultafteryougettheresult
sleep(1);
//executetheinsertquery
query="insertintot1(id,name)values(3,'kunp')";
t=mysql_real_query(&mysql,query,(unsignedint)strlen(query));
if(t)
{
printf("Errormakingquery:%s/n",
mysql_error(&mysql));
}
elseprintf("[%s]made.../n",query);
mysql_close(&mysql);
return0;
}
1.9编译
gcctestmysql.c-I/usr/include/mysql-L/usr/lib64/mysql-lmysqlclient
1.10具体执行结果不确定,因为我没仔细看代码,这个例子主要是用来证明我按照好了mysql,并且可以使用capi操作
相关文章推荐
- CentOS使用MySQL的详细步骤,及C API编程
- CentOS使用MySQL的详细步骤,及C API编程
- Linux(CentOS7.3)使用yum安装MySQL详细步骤
- 数据库:CentOS使用MySQL的详细步骤,及C API编程
- CentOS 6.6 MySQL 8.0详细安装步骤
- Linux 下 使用 yum 安装 mysql 的详细步骤及其使用过程
- 在VMWare中建立Hadoop虚拟集群的详细步骤(使用CentOS)
- Centos下mysql,apache,php安装详细步骤(redis+memcache+APC)
- CentOS MySQL 5.7编译安装步骤详细说明
- 使用virtualBox安装CentOS 6.3的详细步骤
- CentOS 7安装MySQL的详细步骤
- 安装MySQL先复制1. Linux (CentOS 7.3) 下快速安装Mysql数据库(安装教程)2.后复制阿里云配置 MySQL 远程连接的详细步骤
- centos搭建Nginx+PHP+MySql+Redis环境详细步骤(CentOS7环境)
- C++使用Mysql的详细步骤及各个常用方法的代码演示:select,insert,update,delete
- 在VMWare中建立Hadoop虚拟集群的详细步骤(使用CentOS)
- 腾讯云服务器CentOS安装JDK+Tomcat+MySQL详细步骤(以及遇到的各种坑)
- 在VMWare中建立Hadoop虚拟集群的详细步骤(使用CentOS)
- CentOS下MySQL安装详细步骤
- CentOS 6.4+nginx+php+mysql详细设置步骤
- CentOS 6.4下编译安装MySQL 5.6.14详细步骤