MySQL 连接

2025年8月11日 | 阅读 8 分钟

连接是一项计算机科学功能,它允许用户连接到数据库服务器软件。用户可以连接到数据库服务器,无论是在同一台机器上还是在远程位置。因此,如果我们想使用数据库服务器发送命令并以结果集的形式接收答案,我们就需要连接。在本文中,我们将学习如何以多种方式连接到 MySQL 服务器。

理解连接字符串

使应用程序能够与 MySQL 数据库建立连接的一个重要组成部分是 MySQL 连接字符串。它是一组指令,告诉应用程序数据库的位置、如何访问它以及使用哪个数据库。连接字符串通常包含主机名、端口、用户名、密码和数据库名。IP 地址、域名或 localhost 都可以用于标识托管 MySQL 的服务器。MySQL 使用端口作为其通信端点,默认端口为 3306。用户的密码和用户名允许他们安全地访问数据库。连接后,数据库名称会指示系统使用哪个数据库。

例如,PHP 使用 PDO

收到此字符串后,MySQL 驱动程序会建立连接。当正确配置连接字符串时,可以保证功能和安全,尤其是在部署应用程序或建立到远程服务器的连接时。

MySQL 连接类型

MySQL 提供多种与数据库服务器连接的方式。安装 MySQL 服务器后,我们可以使用以下任何客户端程序进行连接

  1. 命令行客户端
  2. MySQL Workbench
  3. PHP 脚本。

使用命令行客户端连接 MySQL 服务器

MySQL 命令行客户端程序提供交互式和非交互式模式下的数据库服务器交互。我们可以在 **MySQL 安装文件夹的 bin 目录**中找到此程序。我们可以通过导航到 MySQL 安装文件夹的 bin 目录并输入来打开 MySQL 命令提示符

如果我们在 **PATH** 中找到 MySQL 程序,我们可以使用以下命令连接到 MySQL 服务器

在语法中,**-u root 表示**我们将使用 root 用户帐户连接到 MySQL 服务器,而 **-p** 指示 MySQL 请求密码。

接下来,我们需要输入 root 用户帐户的密码并按 **Enter**。如果一切正确,它应该会显示如下屏幕

MySQL Connection

此屏幕表明我们已成功连接到 MySQL 数据库服务器,可以在其中发送命令并以结果集的形式接收答案。

假设我们要显示当前服务器上所有可用的数据库,我们可以使用以下命令

它将显示以下输出

MySQL Connection

如果您想 **断开已打开的 MySQL 数据库服务器连接**,您需要使用 exit 命令。

使用 MySQL Workbench 连接到数据库服务器

我们可以通过以下步骤在 Workbench 中连接到 MySQL 数据库服务器

步骤 1:启动 MySQL Workbench。我们应该看到以下屏幕

MySQL Connection

步骤 2:导航到菜单栏,单击 **“数据库”**,然后选择 **“连接到数据库”** 选项,或按 **CTRL+U** 命令。我们也可以通过单击 **MySQL 连接**旁边的 **加号 (+)** 按钮来连接到数据库服务器。请参阅下图

MySQL Connection

步骤 3:选择任何一个选项后,我们将看到以下屏幕

MySQL Connection

步骤 4:填写框以创建连接,例如 **连接名称** 和 **用户名**,无论您想要什么。默认情况下,用户名是 **root**,但我们也可以在 Username 文本框中将其更改为其他用户名。填写所有框后,单击 **“存储到保险库...”** 按钮,为给定用户帐户输入密码。

MySQL Connection

步骤 5:我们将看到一个新窗口来输入密码并单击 **OK** 按钮。

MySQL Connection

步骤 6:输入所有详细信息后,单击 **“测试连接”** 以测试数据库连接是否成功。如果连接成功,请单击 **OK** 按钮。

MySQL Connection

步骤 7:再次单击 **OK** 按钮保存连接设置。完成所有设置后,我们可以在 **MySQL 连接**下看到此连接,用于连接到 MySQL 数据库服务器。请参阅下面的输出,其中我们有一个名为 **Localhost3** 的连接

MySQL Connection

步骤 8:现在,我们可以单击此新创建的连接,它将显示当前模式和一个用于输入查询的窗格

MySQL Connection

使用 PHP 脚本连接到 MySQL 服务器

使用 PHP 脚本连接到 MySQL 数据库服务器的最简单方法是使用 **mysql_connect() 函数**。此函数需要 **五个参数**,并在连接成功时返回 MySQL 链接标识符。如果连接失败,它将返回 **FALSE**。

语法

以下是使用 PHP 脚本进行 MySQL 连接的语法

让我们解释一下 mysql_connect() 函数的参数

Server:运行数据库服务器的主机名称。默认情况下,其值为 lcalhost:3306。

User:访问数据库的用户名。如果未指定此字段,则假定默认值为服务器进程所有者的用户名。

Password:您要访问的数据库的用户的密码。如果未指定此字段,则假定默认值为空密码。

New_link:如果在 mysql_connect() 函数中以相同的参数进行第二次调用,MySQL 不会建立新连接。相反,我们将获得已打开的数据库连接的标识符。

Client_flags:此参数包含以下常量的组合

  • MYSQL_CLIENT_SSL:使用 SSL 加密。
  • MYSQL_CLIENT_COMPRESS:使用压缩协议。
  • MYSQL_CLIENT_IGNORE_SPACE:在函数名后提供空格。
  • MYSQL_CLIENT_INTERACTIVE:在关闭连接之前提供超时。

如果您想 **断开与 MySQL 数据库服务器的连接**,我们可以使用另一个名为 **mysql_close()** 的 PHP 函数。它只接受一个参数,即 mysql_connect() 函数返回的连接。其语法如下

如果未指定任何资源,MySQL 将关闭最后打开的数据库。此函数在连接成功关闭时返回 true。否则返回 FALSE 值。

示例

以下示例解释了如何使用 PHP 脚本连接到 MySQL 服务器

管理和维护连接

  • 在基于 MySQL 的应用程序中,性能和稳定性取决于有效的 **连接管理。** 当多人或多个进程使用数据库时,控制连接的打开、维护和关闭至关重要。
  • 通过不每次都创建新连接,而是重用现有数据库连接的技术称为 **连接池**。这可以提高响应时间并减少开销。许多框架和库都内置了连接池功能。
  • 服务器或客户端在终止不活动或无响应的连接之前等待的时间量由 **超时设置** 控制。通过终止不活动的连接,wait_timeout 和 interactive_timeout 等重要的 MySQL 参数可以防止资源浪费。
  • **最大连接数** 指定一次可以连接到数据库的客户端数量。MySQL 的 max_connections 参数建立了此上限。如果达到此阈值,后续的连接尝试将被拒绝,直到当前连接被释放。
  • 最后,**持久连接与非持久连接** 描述了连接是每次重新建立还是在多个请求之间保持打开状态(持久)。尽管持久连接可以提高效率,但必须仔细控制它们以防止资源耗尽。

如果这些因素得到妥善管理,基于 MySQL 的系统就能保证健壮、高效且可扩展。

总结

关系数据库需要建立和维护 MySQL 连接。无论是在本地连接还是通过命令行客户端或编程语言进行远程连接,了解连接字符串、超时和身份验证都至关重要。除了提高性能外,妥善处理连接还可以确保应用程序的安全性和稳定性。可以通过优化资源使用和限制对安全连接的访问等最佳实践来帮助您与 MySQL 服务器保持可靠且高效的连接。

常见问题

1. MySQL 连接的默认端口是多少?

MySQL 自动连接到 3306 端口。通常,MySQL 服务器会监听此端口以接收 TCP 连接。如果服务器运行在自定义端口上,您必须在连接字符串中包含新端口,以实现安全或配置原因。由于防火墙或云服务可能会自动阻止此端口,因此可能还需要在网络设置中专门打开此端口。

2. 为什么我收到“拒绝访问用户”错误?

“拒绝访问用户”错误通常表示我的凭据或权限不匹配。不正确的用户名或密码,或者未经授权的主机尝试连接都可能是问题的原因。因为 MySQL 同时使用主机和用户名来识别用户,所以即使正确输入用户名,如果主机被阻止,该用户也可能被拒绝。请确保您正在从允许的 IP 地址连接,并且用户已通过使用 GRANT 命令获得所需权限。

3. 如何安全地建立到 MySQL 服务器的远程连接?

建议使用 **SSL/TLS** 加密。为了在传输过程中保护敏感信息,应在 MySQL 服务器和客户端上设置 SSL 证书。与其使用 root 帐户进行远程访问,不如使用防火墙规则或 MySQL GRANT 语句将连接限制在特定 IP 地址。另一种安全的远程 MySQL 访问技术(不需要阻止 MySQL 端口)是 **SSH 隧道**。

4. 描述连接池的重要性。

连接池是一种用于维护一组可重用数据库连接的方法。应用程序从池中获取连接,然后将其返回,从而节省了为每个请求创建新连接和关闭它的资源。这提高了性能,尤其是在流量大的 Web 应用程序中。许多框架和驱动程序,例如 Java 的 JDBC 或 PHP 的 PDO,都带有内置的池化机制,允许开发人员更改空闲时间、池大小等设置。

5. MySQL 持久连接与非持久连接有何不同?

由于持久连接可以同时处理多个请求,因此可以降低维护成本。尽管它们可以提高高流量应用程序的性能,但如果不妥善管理,它们可能会增加服务器资源。当为每个请求建立新的非持久连接时,资源管理更安全,尽管在繁忙的环境中性能可能会受到轻微影响。


下一个主题MySQL Workbench