MySQL程序之:使用命令选项连接到服务器

news/2025/1/20 12:40:29/

本节介绍如何使用命令行选项来指定如何为mysqlmysqldump等客户端建立到MySQL服务器的连接。有关使用类似URI的连接字符串或键值对建立连接的信息,请参阅“使用类似URI的字符串或键值对连接到服务器”。有关无法连接的其他信息,请参阅“解决连接到MySQL的问题”。

要让客户端程序连接到MySQL服务器,它必须使用正确的连接参数,例如运行服务器的主机名以及MySQL帐户的用户名和密码。每个连接参数都有一个默认值,但您可以根据需要使用命令行或选项文件中指定的程序选项覆盖默认值。

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

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

mysql

因为没有参数选项,所以应用默认值:

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

  • 默认用户名是Windows上的ODBC或Unix上的Unix登录名。

  • 没有发送密码,因为既没有给出--password也没有给出-p。
  • 对于mysql,第一个非选项参数作为默认数据库的名称。因为没有这样的参数,mysql选择没有默认数据库

要显式指定主机名和用户名以及密码,请在命令行上提供适当的选项。要选择默认数据库,请添加数据库-name参数。示例:

mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb

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

  • 如果您使用--password或-p选项并指定密码值,则--password=或-p与其后面的密码之间不得有空格。
  • 如果您使用--password或-p但不指定密码值,客户端程序会提示您输入密码。输入密码时不会显示密码。这比在命令行上提供密码更安全,这可能会使系统上的其他用户通过执行ps等命令来查看密码行。请参阅“终端用户密码安全指南”。
  • 要显式指定没有密码并且客户端程序不应提示输入密码,请使用--skip-password选项。

如前所述,在命令行中包含密码值存在安全风险。为避免这种风险,请指定不带任何以下密码值的--password或-p选项:

mysql --host=localhost --user=myname --password mydb
mysql -h localhost -u myname -p mydb

当给出没有密码值的--password或-p选项时,客户端程序会打印一个提示并等待您输入密码。(在这些示例中,mydb不被解释为密码,因为它与前面的密码选项用空格分隔。)

在某些系统上,MySQL用来提示输入密码的库例程会自动将密码限制为八个字符。该限制是系统库的属性,而不是MySQL。在内部,MySQL对密码长度没有任何限制。要解决受其影响的系统的限制,请在选项文件中指定密码(请参阅“使用选项文件”)。另一种解决方法是将MySQL密码更改为八个或更少字符的值,但这有一个缺点,即较短的密码往往不太安全。

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

  • 如果主机未指定或localhost,则会发生与本地主机的连接:在Windows上,客户端使用共享内存连接,如果服务器启动时启用了shared_memory系统变量以支持共享内存连接。在Unix上,MySQL程序对主机名localhost特殊处理,与其他基于网络的程序相比,这可能与您期望的方式不同:客户端使用Unix套接字文件进行连接。--socket选项或MYSQL_UNIX_PORT环境变量可用于指定套接字名称。

  • 在Windows上,如果host为.(句点),或者TCP/IP未启用,并且未指定--socket或主机为空,则客户端使用命名管道进行连接,如果服务器在启动时启用了named_pipe系统变量以支持命名管道连接。如果不支持命名管道连接,或者建立连接的用户不是named_pipe_full_access_group系统变量指定的Windows组的成员,则会发生错误。

  • 其他,连接使用TCP/IP。

即使其他选项通常会导致使用不同的协议,--Protocol选项也允许您使用特定的传输协议。也就是说,--Protocol明确指定传输协议并覆盖前面的规则,即使是localhost。

仅使用或选中与所选传输协议相关的连接选项。其他连接选项将被忽略。例如,在Unix上使用--host=localhost,客户端尝试使用Unix套接字文件连接到本地服务器,即使提供了--port或-P选项来指定TCP/IP端口号。

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

mysql --host=127.0.0.1
mysql --protocol=TCP

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

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

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

mysql --host=remote.example.com

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

mysql --host=remote.example.com --port=13306

您也可以为与本地服务器的连接指定端口号。但是,如前所述,与Unix上localhost的连接默认使用套接字文件,因此除非如前所述强制TCP/IP连接,否则指定端口号的任何选项都将被忽略。

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

mysql --port=13306 --host=localhost

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

mysql --port=13306 --host=127.0.0.1
mysql --port=13306 --protocol=TCP

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

  • 在选项文件的[client]部分指定连接参数。文件的相关部分可能如下所示:

    [client]
    host=host_name
    user=user_name
    password=password

  • 可以使用环境变量指定一些连接参数。例子:要为mysql指定主机,请使用MYSQL_HOST。在Windows上,要指定MySQL用户名,请使用USER


http://www.ppmy.cn/news/1564660.html

相关文章

设置完端口转发后,本机可以ping通公网设备,但公网设备无法ping通本机内网ip

设置端口转发后,本机可以ping通公网设备,但公网设备无法ping通本机内网IP,通常与以下原因有关: 1. 端口转发仅针对特定端口 端口转发的作用:端口转发仅将特定端口的流量(如TCP/UDP)从公网IP转发…

Redis的安装和配置、基本命令

一、实验目的 本实验旨在帮助学生熟悉Redis的安装、配置和基本使用,包括启动Redis服务、使用命令行客户端进行操作、配置Redis、进行多数据库操作以及掌握键值相关和服务器相关的命令。 二、实验环境准备 1. JAVA环境准备:确保Java Development Kit …

今天你学C++了吗?——C++中的STL

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

基于当前最前沿的前端(Vue3 + Vite + Antdv)和后台(Spring boot)实现的低代码开发平台

项目是一个基于当前最前沿的前端技术栈(Vue3 Vite Ant Design Vue,简称Antdv)和后台技术栈(Spring Boot)实现的低代码开发平台。以下是对该项目的详细介绍: 一、项目概述 项目名称:lowcode-s…

基于海思soc的智能产品开发(高、中、低soc、以及和fpga的搭配)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 市场上关于图像、音频的soc其实非常多,这里面有高、中、低档,开发方式也不相同。之所以会这样,有价格的因素&am…

使用numpy求解线性代数相关问题

在numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组类型相乘是逐元素相乘,而矩阵类型相乘则是矩阵乘法。 以下使用numpy.array类型来进行线性代数问题求解。 矩阵的转置: A.T import numpy as n…

el-tree树结构在名称后面添加其他文字

//在 el-tree 中使用 render-content 插槽来展示文件大小 <template><div><el-treeref"tree"v-loading"treeData.loading":data"treeData.data"node-key"id" :props"defaultProps":render-content"rend…

CSS笔记01

黑马程序员视频地址&#xff1a; 前端Web开发HTML5CSS3移动web视频教程https://www.bilibili.com/video/BV1kM4y127Li?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes 目录 引入方式 CSS特性 继承性 层叠性 优先级 Emmet写法 …