分享到

简介

使用 MySQL 数据库时,您首先需要考虑的事情之一是如何连接和交互数据库实例。这需要在数据库客户端(您用于与数据库交互的组件)和数据库服务器(存储、组织和提供对您的数据访问权限的实际 MySQL 实例)之间进行协调。

因此,您需要了解如何作为客户端连接,通过提供所需的身份验证信息。在本指南中,我们将介绍如何使用原生的 mysql 命令行客户端连接到 MySQL 数据库——这是与数据库实例交互最常见和最有用的方式之一。

在配套指南中,您可以了解如何配置 MySQL 的身份验证以满足您项目的需求。建议阅读这两份指南,以便更全面地了解 MySQL 中的身份验证工作原理。

关于 mysql 客户端的基本信息

mysql 客户端是 MySQL 的默认命令行客户端和 SQL shell。您可以交互式地使用它来与服务器建立 shell 会话,或者您可以向其提供 SQL 文件以在没有用户交互的情况下运行。在实施配置选项和设置环境时,它尤其有用。交互式探索和即席查询也是开发程序将使用的访问模式的强项。

连接到 MySQL 服务器并进行身份验证的方式取决于服务器的配置。在以下部分中,我们将介绍一些基本的连接选项。为了清晰起见,我们将区分本地连接和远程连接

  • 本地连接:客户端和 MySQL 实例位于同一服务器上的连接
  • 远程连接:客户端连接到在不同计算机上运行的网络可访问的 MySQL 实例

让我们从从同一台计算机连接到数据库开始。

使用 mysql 连接到本地数据库

不带任何参数,mysql 命令尝试连接到 Unix 套接字文件以访问本地数据库。通常,默认套接字文件位置由配置文件或编译的默认值确定。默认情况下,您的操作系统用户名用于尝试连接到数据库。

因此,如果您的当前用户是本地数据库上的有效 MySQL 用户,您可以尝试通过键入以下内容进行连接

mysql

如果帐户存在且不需要密码,或者如果为该帐户配置了 MySQL 套接字身份验证,您将自动登录。如果用户名在 MySQL 中不存在,或者如果需要密码或其他身份验证,则命令将失败。

要控制 mysql 尝试登录数据库的方式,请使用命令行选项通过命令传递其他信息

  • --user=<用户名>-u <用户名>:指定要进行身份验证的 MySQL 用户。
  • --password-p:告诉 MySQL 提示输入 MySQL 用户的密码。
  • --host=127.0.0.1-h 127.0.0.1:告诉 mysql 使用本地 TCP 回环地址而不是 Unix 套接字连接到本地 MySQL 实例。如果您的 MySQL 服务器未配置为使用 Unix 套接字,则此选项非常重要。

注意:MySQL 对 127.0.0.1 的解释与 localhost 不同。指定 127.0.0.1 表示您要使用 TCP 连接,而 localhost 将导致 MySQL 尝试使用 Unix 套接字连接到本地数据库。

因此,如果您需要以 MySQL 用户 eva 身份登录并使用密码,但仍然使用 Unix 套接字进行连接,您可以键入

mysql --user=eva --password

mysql 客户端将提示您输入帐户的密码。

如果您想尝试使用相同的用户名但通过 TCP 连接到本地数据库登录,您应该键入

mysql --user=eva --password --host=127.0.0.1

默认的身份验证配置以及初始管理用户名和密码可能会因 MySQL 的安装方式而异。但是,许多方法都将 MySQL 设置为使用 Unix 套接字,并包含默认的 root 用户作为管理帐户。

在这些情况下,您可以通过键入以下内容以 root 用户身份登录数据库

mysql --user=root --password

系统将提示您输入在安装期间选择或生成的管理密码才能继续。

所有这些方法都允许您连接到本地 MySQL 数据库。

连接到远程数据库

如果您希望连接到远程 MySQL 数据库,您将必须提供远程主机的网络位置,并可能添加一些其他信息。

可用的身份验证方法因 MySQL 实例的配置而异。但是,最常见的是,您需要提供以下参数进行身份验证

选项描述
--host=-hMySQL 服务器的网络主机名或 IP 地址。
--port=-PMySQL 服务器正在运行的网络端口。如果服务器使用端口 3306(默认 MySQL 端口),则可以省略此参数。
--user=-u您希望连接的数据库用户名。如果未指定,将使用您的操作系统用户名。
--password-p指示您要为指定的帐户提供密码。mysql 客户端将在您按下 Enter 键后提示您输入密码。
MySQL 数据库您要访问的 MySQL 数据库 名称。如果未指定,mysql 将连接到服务器,但不会连接到特定的数据库。

连接到远程数据库的基本格式通常如下所示

mysql --host=<hostname> --port=<port> --user=<user> --password <database>

按下 Enter 键后,mysql 客户端将提示您输入密码。如果您成功通过身份验证,将启动一个新的交互式 MySQL 会话。

例如,我们可以想象想要连接到具有以下要求的数据库

  • 主机名:myhost
  • 端口:1234
  • 数据库:applicationdb
  • 用户名:myapplicationuser
  • 密码:mypass

使用以下选项调用 mysql 将允许您进行身份验证

mysql --host=myhost --port=1234 --user=myapplicationuser --password applicationdb

按下 Enter 键后,系统将提示您输入密码,您可以使用 mypass 进行身份验证。

调整 MySQL 服务器的身份验证配置

如果您想修改决定用户如何对您的 MySQL 实例进行身份验证的规则,您可以通过修改服务器的配置来实现。您可以在本文中找到如何修改 MySQL 的身份验证配置。

结论

在本指南中,我们从客户端的角度介绍了 MySQL 身份验证。我们演示了如何使用 mysql 命令行客户端连接到本地和远程数据库实例。

了解如何连接到各种 MySQL 实例是您开始使用数据库系统时需要理解的首要步骤之一。您可能运行一个用于开发的本地 MySQL 实例,该实例不需要任何特殊的身份验证,但是您在暂存和生产环境中的数据库几乎肯定需要身份验证。能够在任何一种情况下进行身份验证都将使您能够在不同的环境中良好地工作。

常见问题解答

是的,您可以使用 Python 连接到 MySQL 数据库。您需要下载 MySQL Python 连接器并使用 connect() 构造函数。

下载连接器后,MySQL 提供了开发者指南

是的,您可以使用 Java 连接到 MySQL 数据库。您需要下载 MySQL Java 连接器。

MySQL 提供了连接器的安装指南和入门示例。

如果您希望连接到远程 MySQL 数据库,您将必须提供远程主机的网络位置,并可能添加一些其他信息。

可用的身份验证方法因 MySQL 实例的配置而异。但是,最常见的是,您需要提供以下参数进行身份验证

选项描述
--host=-hMySQL 服务器的网络主机名或 IP 地址
--port-PMySQL 服务器正在运行的网络端口。如果服务器使用端口 3306(默认 MySQL 端口),则可以省略此参数。
--user=-u您希望连接的数据库用户名。如果未指定,将使用您的操作系统用户名。
--password-p指示您要为指定的帐户提供密码。mysql 客户端将在您按下 Enter 键后提示您输入密码。
MySQL 数据库您要访问的 MySQL 数据库名称。如果未指定,mysql 将连接到服务器,但不会连接到特定的数据库。

MySQL 可以接受的连接数由 max_connections 变量控制。默认情况下,此值为 151。

如果需要,您可以手动增加此值,并且您的服务器有足够的 RAM 来支持增加的连接数。

有几种方法可以识别 MySQL 数据库上的连接数。最常见的方法是通过 mysql 命令行。

您可以使用 threads_connected 变量,该变量显示连接数的输出。

您还可以使用 show processlist 命令,该命令指示服务器内执行的线程集当前正在执行的操作。

关于作者
Justin Ellingwood

Justin Ellingwood

自 2013 年以来,Justin 一直在撰写关于数据库、Linux、基础设施和开发者工具的文章。他目前与妻子和两只兔子住在柏林。他通常不必以第三人称写作,这对所有相关方来说都是一种解脱。