127.0.0.1和localhost连接mysql数据库的区别到底有多大

12人阅读 评论(0) 收藏 举报
分类:

一, 127.0.0.1和localhost连接mysql数据库的区别

1, localhost连接mysql数据库情况

mysql -h localhost -uroot -p

这里写图片描述

2, 下面是127.0.0.1连接mysql数据库的情况

mysql -h 127.0.0.1 root -p

这里写图片描述

不知道你看出连接的方式不同下面我就分析一下

这里写图片描述

localhost是通过UNIX的socket本地连接而没有通过端口3306, 127.0.0.1是通过TCP的协议连接3306的端口 其中的关系就是我想你也知道吧

查看端口的命令:

lsof -i:3306

其实UNIX的本地通信在系统中服务非常频繁 比如双进程守护(杀不死进程) ,在android系统也应用了,

这是我写UNIX的本地通信的文章的简单例子分析

我写socket连接mysql的api文章

下面是连接mysql数据库的代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql.h>
#include <unistd.h>

#define _USER_ "root" //用户名
#define _HOST_ "localhost" //host
#define _PASSWD_ "root"   //root 用户名密码
#define _DB_ "DB" //库名
#define _PORT_ 3306  //port
#define _UNIX_SOCK_ "/var/lib/mysql/mysql.sock"

int main(int argc, char *argv[])
{
    int ret, i;
    MYSQL *mysql;
    MYSQL_RES * res;
    char strsql[512] = { 0};

    //1,mysql_init 初始化
    mysql = mysql_init(NULL);
    if (mysql == NULL) {
        printf("mysql_init error\n");
        return -1;
    }

    //2,mysql_real_connect链接
    mysql = mysql_real_connect(mysql, 
            _HOST_, 
            _USER_, 
            _PASSWD_, 
            _DB_, 
            0, 
            _UNIX_SOCK_,  // UNIX的本地通信的配置默认位置/var/lib/mysql/mysql.sock
            0);

    if (mysql == NULL) {
        printf("mysql_real_connect error\n");
        return -1;
    }
    printf("connect mysql ok\n");
    static int p = 0;
    while (1) {
        printf("sleep\n");
        sleep(10);
        ++p;
        if (p == 4) 
            break;
    }
    //关闭mysql
    mysql_close(mysql);
    return 0;
}

这里写图片描述

二, 聊聊mysql的配置文件my.conf

我昨天和同事遇到的问题 , 我们要移动mysql的默认保存数据库的文件的位置, 但是我了, 又改变本地连接的配置 就是UNIX的socket连接 所以我们使用代码localhost连接不上mysql数据库是因为mysql数据库的api函数mysql_real_connect默认的位置是/var/lib/mysql/mysql.sock的位置

这里写图片描述

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
# mysql数据库的库的保存位置设置
datadir=/var/lib/mysql
# mysql数据库连接localhost使用本地UNXI本地socket连接文件位置设置
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
nice = 0
#pid-file=/var/lib/mysql/mysql.sock

#设置编码utf-8
[mysql]
default-character-set =utf8

查看评论

MySQL主机127.0.0.1与localhost区别总结

可能有很多朋友都会碰到一个问题不知道127.0.0.1与localhost有什么区别,但是有的时间会发现使用localhost连接不了,但是改成127.0.0.1即可了连接了,那么他们会有什么区别呢,...
  • analogous_love
  • analogous_love
  • 2016-11-04 11:19:47
  • 3462

127.0.0.1和localhost端口都不能连接到MySQL数据库 radio提交数据

今天连接数据库突然出现问题,说是连接不上数据库,于是换了个端口127.0.0.1进行连接,发现还是连接不上,就在控制面板里找到管理工具-服务,重启了下MySQL服务,然后问题解决。深层次的错误没有研究...
  • qq_35133980
  • qq_35133980
  • 2017-07-17 09:32:17
  • 129

mysql localhost与127.0.0.1以及ip连接的区别

一家之言: localhost与127.0.0.1的区别 localhost与127.0.0.1的区别是什么?相信有人会说是本地ip,曾有人说,用127.0.0.1比localhost好,可以...
  • rainday0310
  • rainday0310
  • 2014-05-09 17:36:30
  • 4636

localhost与127.0.0.1的区别

localhost与127.0.0.1的区别是什么? 相信有人会说是本地ip,曾有人说,用127.0.0.1比localhost好,可以减少一次解析。 看来这个入门问题还有人不清楚,其实这两者是有区别...
  • xifeijian
  • xifeijian
  • 2013-12-18 22:33:01
  • 80949

连接MYSQL时,主机名为 localhost 和 127.0.0.1 的区别

MYSQL 127.0.0.1 localhost 区别 skip-name-resolve
  • topasstem8
  • topasstem8
  • 2014-01-16 14:44:50
  • 15049

localhost与127.0.0.1的概念和工作原理之不同

有时候我们在调试程序的时候,会出现一些莫名其妙匪夷所思的奇怪问题,localhost不能访问但127.0.0.1可以访问的问题就是其中之一。 我估计大多数人都不会去想localhost到底与12...
  • qq_21831899
  • qq_21831899
  • 2017-05-04 14:50:51
  • 1779

使用localhost和127.0.0.1连接mysql的区别

localhost和127.0.0.1去连接MySQL的区别,在此总结下。 一、网络限制 localhost本地服务器,不经网卡传输,不受网络防火墙和网卡相关的的限制。 127.0.0.1本...
  • sb___itfk
  • sb___itfk
  • 2017-07-31 17:05:58
  • 442

mysql连接localhost还是127.0.0.1的速度测试

安装opencenter时,提示数据库地址使用127.0.0.1要比localhost要快,想想也应该是有些速度差异。 找到一篇文章介绍:http://blog.sina.com.cn/s/blog...
  • DCD
  • DCD
  • 2015-04-07 14:13:51
  • 2386

Windows下MySQL5.6以上版本不能用localhost和127.0.0.1连接问题

问题描述:使用的MySQL5.6安装包默认的安装方式安装的mysql,然后使用Navicat Premium 工具 和 localhost/127.0.0.1链接mysql数据库,结果都弹出提示:Ca...
  • xlxxcc
  • xlxxcc
  • 2016-04-13 23:40:35
  • 5244

localhost和127.0.0.1的区别

  • 2011年07月21日 12:54
  • 146KB
  • 下载
    个人资料
    持之以恒
    等级:
    访问量: 2万+
    积分: 1335
    排名: 3万+
    最新评论