【MySQL精通之路】MySQL的使用(3)-命令行连接

本节介绍使用命令行选项 来指定如何为MySQLmysqldump等客户端建立MySQL服务器的连接。

有关使用类似URI的连接字符串或键值对建立连接的信息,对于MySQL Shell等客户端,请参阅"使用类似URI字符串或键值配对连接到服务器"。

有关无法连接的其他信息,请参阅"连接到MySQL的问题疑难解答"。

客户端程序要连接到MySQL服务器,必须使用正确的连接参数,例如服务器运行的主机名以及MySQL帐户的用户名和密码。

每个连接参数都有一个默认值,但您可以根据需要使用命令行或选项文件中指定的程序选项来替代默认值。

这里的示例使用mysql客户端程序,但这些原则适用于其他客户端,如mysqldump、mysqladmin或mysqlshow。

此命令调用mysql时不指定任何显式连接参数:

复制代码
mysql

默认主机名为localhost。在Unix上,这有一个特殊的含义,如后所述。

默认用户名在Windows上为ODBC,在Unix上为Unix登录名。

没有发送密码,因为既没有给出--password也没有给出-p。

对于mysql,第一个nonoption参数被作为默认数据库的名称。因为没有这样的参数,mysql不选择默认数据库。

要明确指定主机名和用户名以及密码,请在命令行中提供适当的选项。若要选择默认数据库,请添加数据库名称参数。示例:

sql 复制代码
mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb

对于密码选项,密码值是可选的:

如果使用--password或-p选项并指定密码值,则--password=或-p与后面的密码之间不得有空格。

如果使用--password或-p但未指定密码值,则客户端程序会提示您输入密码。输入密码时不会显示密码。这比在命令行上提供密码更安全,因为命令行可能使系统上的其他用户能够通过执行ps等命令来查看密码行。

请参阅"密码安全的最终用户指南"。

【MySQL精通之路】安全(2)-密码安全-CSDN博客

要明确指定没有密码,并且客户端程序不应提示输入密码,请使用**--skip password选项**。

如前所述,在命令行中包含密码值是一种安全风险。若要避免此风险,请指定--password或-p选项,但不包含以下任何密码值:

sql 复制代码
mysql --host=localhost --user=myname --password mydb
mysql -h localhost -u myname -p mydb

当提供的--password或-p选项没有密码值时,客户端程序会打印一个提示并等待您输入密码。

(在这些示例中,mydb不会被解释为密码,因为它与前面的password选项之间有一个空格。)

在某些系统上,MySQL用于提示输入密码的库例程会自动将密码限制为八个字符。

这个限制是系统库的属性,而不是MySQL。

在内部,MySQL对密码的长度没有任何限制。

要绕过受其影响的系统的限制,请在配置文件中指定您的密码

请参阅"使用选项文件"。

【MySQL精通之路】MySQL的使用(2)-配置-CSDN博客

另一种解决方法是将MySQL密码更改为8个或更少字符的值,但这有一个缺点,即较短的密码往往不太安全。

客户端程序确定要建立的连接类型,如下所示:

如果未指定主机或主机为localhost,则会发生到本地主机的连接:

在Windows上,如果服务器启动时启用了shared_memory系统变量以支持共享内存连接,则客户端使用共享内存进行连接。

在Unix上,MySQL程序对主机名localhost进行了特殊处理,与其他基于网络的程序相比,这种方式可能与您所期望的不同:客户端使用Unix套接字文件进行连接。--socket选项或MYSQL_UNIX_PORT环境变量可用于指定套接字名称。
在Windows上,如果主机为。(period),或者TCP/IP未启用且--socket未指定,或者主机为空,如果服务器启动时启用了named_pipe系统变量以支持命名管道连接,则客户端将使用命名管道进行连接。如果不支持命名管道连接,或者进行连接的用户不是named_pipe_full_access_group系统变量指定的Windows组的成员,则会发生错误。
否则,连接将使用TCP/IP。

--protocol选项使您能够使用特定的传输协议,即使其他选项通常会导致使用不同的协议。

也就是说,--protocol显式地指定传输协议并覆盖前面的规则,即使对于localhost也是如此。

仅使用或检查与所选传输协议相关的连接选项。其他连接选项将被忽略。

例如,在Unix上使用--host=localhost时,即使提供了--port或-P选项来指定TCP/IP端口号,客户端也会尝试使用Unix套接字文件连接到本地服务器。

要确保客户端与本地服务器建立TCP/IP连接,请使用--host或-h指定主机名值127.0.0.1(而不是localhost),或本地服务器的IP地址或名称。您还可以通过使用--protocol=TCP选项显式指定传输协议,即使对于localhost也是如此。示例:

sql 复制代码
mysql --host=127.0.0.1
mysql --protocol=TCP

如果服务器配置为接受IPv6连接,则客户端可以使用--host=::1通过IPv6连接到本地服务器

请参阅"IPv6支持"。

在Windows上,要强制MySQL客户端使用命名管道连接,请指定--pipe或--protocol=pipe选项,或指定。(句点)作为主机名。如果服务器启动时未启用named_pipe系统变量以支持命名管道连接,或者进行连接的用户不是named_pipe_full_access_group系统变量指定的Windows组的成员,则会发生错误。如果不想使用默认管道名称,请使用--socket选项指定管道名称。

与远程服务器的连接使用TCP/IP。此命令使用默认端口号(3306)连接到运行在remote.example.com上的服务器:

sql 复制代码
mysql --host=remote.example.com

要明确指定端口号,请使用--port或-P选项:

sql 复制代码
mysql --host=remote.example.com --port=13306

您也可以指定连接到本地服务器的端口号。

但是,如前所述,默认情况下,到Unix上localhost的连接使用套接字文件,因此除非如前所示强制TCP/IP连接,否则任何指定端口号的选项都将被忽略。

对于此命令,程序在Unix上使用一个套接字文件,并忽略--port选项:

sql 复制代码
mysql --port=13306 --host=localhost

要使用端口号,请强制建立TCP/IP连接。例如,通过以下任一方式调用程序:

sql 复制代码
mysql --port=13306 --host=127.0.0.1
mysql --port=13306 --protocol=TCP

有关控制客户端程序如何与服务器建立连接的配置的更多信息,

请参阅"连接到服务器的命令选项"。

【MySQL精通之路】MySQL的使用(3)-连接到服务器的配置-CSDN博客

可以指定连接参数,而无需每次调用客户端程序时在命令行中输入这些参数:

sql 复制代码
[client]
host=host_name
user=user_name
password=password

有关更多信息,请参阅"使用配置文件"。

【MySQL精通之路】MySQL的使用(2)-配置-CSDN博客

可以使用环境变量指定某些连接参数。示例:

要指定mysql的主机,请使用mysql_host。

在Windows上,要指定MySQL用户名,请使用user。

有关支持的环境变量的列表,请参阅"环境变量"。

未完待续...

相关推荐
赤壁小虾2 小时前
【渲染流水线】[逐片元阶段]-[透明度测试]以UnityURP为例
java·前端·数据库
MC皮蛋侠客2 小时前
SQLAlchemy 系列(七):高级建模与高效写入——批量 DML、方言与扩展
数据库·python
奈斯先生Vector3 小时前
把 Midjourney 二次编辑做成生产系统:customId 能力令牌、Action Graph 与 WebUI 精修工作台
数据库·人工智能·架构·aigc·音视频·midjourney
Lethehong3 小时前
双擎并驱·全链路并行:KFS让TB级异构增量同步秒级到达
数据库
MC皮蛋侠客3 小时前
SQLAlchemy 系列(八):AsyncIO、并发与 Web 生命周期——让每个并发任务持有自己的 Session
数据库·python
一水4 小时前
Redis实战:一个AI工作流系统里的五个应用场景,从传参到限流的完整链路
数据库·redis·wpf
Ai拆代码的曹操4 小时前
MySQL GROUP BY 性能优化:执行计划分析 + 索引重构实战
mysql·性能优化·重构
枫叶v.5 小时前
Prompt Injection 防不住怎么办?从 Source-Sink 模型设计 Agent 安全边界
数据库·安全·prompt
Lucky_Turtle5 小时前
【Milvus】向量数据库
数据库
吴声子夜歌5 小时前
MongoDB 8.0——安全性
数据库·mongodb