简介
在使用 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 | 表示你希望为指定账户提供密码。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
按下回车键后,系统会提示你输入密码,你可以用 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 | 表示你希望为指定账户提供密码。mysql 客户端在你按下 Enter 后将提示你输入密码。 |
MySQL 数据库 | 你想要访问的 MySQL 数据库名称。如果未指定,mysql 将连接到服务器,但不连接到特定的数据库。 |
MySQL 可以接受的连接数由 max_connections
变量控制。默认情况下,此值为 151。
如果需要,并且你的服务器有足够的 RAM 来支持增加的连接,你可以手动增加此值。
有几种方法可以识别 MySQL 数据库上的连接数。最常见的方法是通过 mysql
命令行。
你可以使用 threads_connected
变量,它会显示连接数。
你还可以使用 show processlist
命令,该命令指示服务器内正在执行的线程集当前正在执行的操作。