你的数据库启动了么?看看系统上有没有mysqld的进程。mysql.sock是因为你制定了连接localhost,mysql会使用unix domain socket连接,效率比tcp socket高些。

解决方案 »

  1.   

    在终端启动mysqld:
    [root@0-8-2-df-fa-ee ~]# /usr/local/mysql/bin/mysqld_safe &
    系统输出:
    [1] 26702
    [root@0-8-2-df-fa-ee ~]# Starting mysqld daemon with databases from /usr/local/mysql/var
    查看mysqld的进程:
    [root@0-8-2-df-fa-ee ~]# ps -a|grep mysqld
    系统输出:
    26702 pts/1    00:00:00 mysqld_safe
    26723 pts/1    00:00:00 mysqld
    然后编译输出写好的C API程序:
    [root@0-8-2-df-fa-ee ~]# gcc write.c -L/usr/lib/mysql -lmysqlclient
    [root@0-8-2-df-fa-ee ~]# ./a.out
    系统提示:
    Error connecting to database: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
    [root@0-8-2-df-fa-ee ~]#
    怎么回事?还是有错误 我用的是root账号
      

  2.   

    你试试用 mysql 客户端程序能否连接?如果成功,则添加一个网络访问用户:
    创建用户:
    GRANT ALL ON *.* TO testuser@"%" IDENTIFIED BY "testpwd";
      

  3.   

    谢谢你们指点:但是我的客户端能连接,我还用客户端建表了。。
     关于添加网络访问用户,能具体讲讲么?
     GRANT ALL ON *.* TO testuser@"%" IDENTIFIED BY "testpwd";是什么意思呢?
     它是不是写在终端里的?还是写在客户机里面的
      

  4.   

    而且,为什么解决我这个问题要添加网络访问用户呢?我的客户端,服务器,还有用c api连接mysql的程序都是用一台机器写的
      

  5.   

    这就对了,通过IP访问必须得需要网络用户,
    GRANT ALL ON *.* TO testuser@"%" IDENTIFIED BY "testpwd";
    你可以通过客户端登录后运行该脚本来实现,照抄就行;testuser网络用户名,testpwd网络用户密码;再不清楚看手册