简介
使用 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=<username>或-u <username>:指定用于身份验证的 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= 或 -h | MySQL 服务器的网络主机名或 IP 地址。 |
--port= 或 -P | MySQL 服务器运行的网络端口。如果服务器使用默认的 MySQL 端口 3306,则可以省略此参数。 |
--user= 或 -u | 您希望连接的数据库用户名。如果未指定,将使用您的操作系统用户名。 |
--password 或 -p | 表示您希望为指定账户提供密码。Enter 键按下后,mysql 客户端将提示您输入密码。 |
| 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
按下回车键后,您将被提示输入密码,然后您可以使用 mypass 进行身份验证。
调整 MySQL 服务器的身份验证配置
如果您想修改用户如何向 MySQL 实例进行身份验证的规则,可以通过修改服务器配置来实现。您可以在本文中了解如何修改 MySQL 的身份验证配置。
结论
在本指南中,我们从客户端角度介绍了 MySQL 身份验证。我们演示了如何使用 mysql 命令行客户端连接到本地和远程数据库实例。
了解如何连接到各种 MySQL 实例是您开始使用数据库系统时需要理解的第一步。您可能运行一个不需要任何特殊身份验证的本地 MySQL 开发实例,但您在预生产和生产环境中的数据库几乎肯定需要身份验证。在任何情况下都能够进行身份验证将使您能够在不同的环境中良好地工作。
常见问题解答
是的,您可以使用 Python 连接到 MySQL 数据库。您需要下载 MySQL Python 连接器并使用 connect() 构造函数。
下载连接器后,MySQL 提供了开发者指南。
是的,您可以使用 Java 连接到 MySQL 数据库。您需要下载 MySQL Java 连接器。
MySQL 提供了连接器安装指南和入门示例。
如果您希望连接到远程 MySQL 数据库,您将不得不提供远程主机的网络位置,并可能添加一些额外的信息。
可用的身份验证方法因 MySQL 实例的配置而异。但最常见的是,您需要提供以下参数进行身份验证:
| 选项 | 描述 |
|---|---|
--host= 或 -h | MySQL 服务器的网络主机名或 IP 地址 |
--port 或 -P | MySQL 服务器运行的网络端口。如果服务器使用默认的 MySQL 端口 3306,则可以省略此参数。 |
--user= 或 -u | 您希望连接的数据库用户名。如果未指定,将使用您的操作系统用户名。 |
--password 或 -p | 表示您希望为指定账户提供密码。Enter 键按下后,mysql 客户端将提示您输入密码。 |
| MySQL 数据库 | 您希望访问的 MySQL 数据库名称。如果未指定,mysql 将连接到服务器而不连接到特定的数据库。 |
MySQL 可以接受的连接数由 max_connections 变量控制。默认情况下,此值为 151。
如果需要且您的服务器有足够的 RAM 来支持增加的连接,您可以手动增加此值。
有几种方法可以识别 MySQL 数据库上的连接数。最常见的方法是通过 mysql 命令行。
您可以使用 threads_connected 变量,它显示连接数的输出。
您还可以使用 show processlist 命令,该命令指示服务器中正在执行的线程集当前正在执行的操作。
