简介
使用 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 套接字连接到本地数据库。
因此,如果您需要使用相同的用户名以密码身份登录,但仍使用 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
命令,该命令指示当前由服务器中执行的线程集执行的操作。