• MySQL连接方式: Unix套接字 & TCP/IP


    • 今天连接mysql数据库使用mysql -u root -p指令的时候遇到了这个问题:
      在这里插入图片描述
      解决之后来总结一下mysql的连接方式

    1. Unix套接字(或Windows命名管道)

    是一种特殊的套接字,仅用于同一台机器上的进程间通信。它不使用网络协议,因此速度很快。当我们谈论MySQL使用Unix套接字进行本地连接时,就是指这种套接字。

    特点:

    • 速度:Unix套接字通常比TCP/IP快,因为它避免了网络堆栈的开销。
    • 安全性:连接仅限于本地计算机,不能远程访问。
    • 主机名:在MySQL中,使用localhost作为主机名会导致客户端使用Unix套接字连接。

    场景:

    适用于当客户端和服务器在同一台机器上运行时。由于其速度快,本地应用程序通常默认使用Unix套接字。

    • 如果MySQL服务器没有运行,或者套接字文件路径配置错误,可能会收到类似Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)的错误。

    2. TCP/IP

    特点:

    • 灵活性:允许从任何能够访问服务器IP地址和端口的地方进行远程访问。
    • 主机名:使用IP地址(例如127.0.0.1)作为主机名会导致客户端使用TCP/IP连接。
    • 配置:可能需要配置防火墙和MySQL用户权限,以允许特定的远程访问。

    场景:

    适用于需要远程访问MySQL服务器的场景,例如Web服务器、分布式应用等。

    当你需要远程访问MySQL服务器,如在Web服务器和分布式应用的环境中,通常使用TCP/IP协议连接是非常实用的。

    • 以下是使用TCP/IP连接MySQL的两种命令示例:

      1. 使用IP地址连接:

        当你使用具体的IP地址(如127.0.0.1)进行连接时,MySQL客户端会默认使用TCP/IP协议。

        mysql -h 127.0.0.1 -P 3306 -u username -p
        
        • 1
      2. 强制使用TCP/IP连接到localhost:

        在某些情况下,你可能希望在本地计算机上使用TCP/IP协议连接到MySQL,而不是默认的Unix套接字。为此,你可以使用--protocol=TCP参数来指定。

        mysql -h localhost --protocol=TCP -P 3306 -u root -p
        
        • 1

      这两种方法都利用了TCP/IP协议进行连接。第一个方法明确指定了IP地址,而第二个方法则是通过--protocol选项显式指定了协议。

    3.对比总结

    • Unix套接字更适合本地连接,由于没有网络堆栈的开销,所以速度更快,安全性更高。

    • TCP/IP允许更大的灵活性,尤其是在需要远程连接的场景中。但可能需要更多的配置,包括MySQL用户权限和防火墙设置。

    • 以下来自chatgpt
      在这里插入图片描述

  • 相关阅读:
    [算法日志]图论: 广度优先搜索(BFS)
    Linux驱动开发(一)---环境搭建与hello world
    51单片机中断函数讲解及外部中断举例
    软件工程毕业设计课题(81)微信小程序毕业设计PHP校园跑腿小程序系统设计与实现
    【2022】Nginx使用ngx_http_log_module模块定义日志
    直接激光雷达里程计:基于稠密点云的快速定位
    远程连接centos 7 图形化桌面
    分布式搜索引擎es-3
    固定资产模块事务代码
    Encountered 7 file(s) that should have been pointers, but weren‘t
  • 原文地址:https://blog.csdn.net/qq_52431436/article/details/133767235