简介
当使用 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 服务器正在运行的网络端口。如果服务器正在使用端口 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= 或 -h | MySQL 服务器的网络主机名或 IP 地址 |
--port 或 -P | MySQL 服务器正在运行的网络端口。如果服务器正在使用端口 3306(默认 MySQL 端口),则可以省略此参数。 |
--user= 或 -u | 您希望以其身份连接的数据库用户名。如果未指定,将使用您的操作系统用户名。 |
--password 或 -p | 表示您要为指定的帐户提供密码。mysql 客户端将在您按下 Enter 键后提示您输入密码。 |
MySQL 数据库 | 您要访问的 MySQL 数据库名称。如果未指定,mysql 将连接到服务器,但不连接到特定数据库。 |
MySQL 可以接受的连接数由 max_connections
变量控制。默认情况下,此值为 151。
如果需要,您可以手动增加此值,并且您的服务器具有足够的 RAM 来支持增加的连接。
有几种方法可以识别 MySQL 数据库上的连接数。最常见的方法是通过 mysql
命令行。
您可以使用 threads_connected
变量,该变量显示连接数的输出。
您还可以使用 show processlist
命令,该命令指示服务器中执行的线程集当前正在执行的操作。