首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL CLI客户端更改套接字位置

MySQL CLI客户端更改套接字位置
EN

Stack Overflow用户
提问于 2020-04-13 20:07:50
回答 1查看 421关注 0票数 0

我有一个应用程序服务器和几个数据库服务器。在DB服务器中,我安装了整个MySQL服务器包,但在应用程序服务器中,我只安装了MySQL客户端包,以使其能够连接到驻留在DB服务器上的MySQL服务器。由于我使用的是InnoDB集群,所以在我的应用服务器中,我安装并引导了MySQL路由器。

现在我想通过MySQL路由器连接到MySQL服务器。我必须发出以下任一MySQL命令:

mysql -uroot -p'password' -h127.0.0.1 -P6446

mysql -uroot -p'password' -P6446 --protocol=tcp

我必须指定端口,在这种情况下这是可以的,因为MySQL路由器已经配置了不同的端口来访问不同的数据库(读写数据库或只读数据库)。我关心的是,我必须指定-h127.0.0.1--protocol=tcp,以强制它使用TCP连接而不是套接字。如果我不指定它,我会得到以下错误:

代码语言:javascript
复制
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

我的目标是摆脱在每个连接中指定主机/协议。/var/lib/mysql/mysql.sock是从哪里来的?是否为MySQL默认套接字位置?我在DB服务器上为[client]组在my.cnf中配置的实际套接字位置是/opt/mysql/mysql.sock。路由器中配置的套接字位置为socket=/etc/mysqlrouter/mysql.sock。我已经测试过,如果我用--socket指定路由器中配置的套接字位置,它将工作,而不需要指定主机和协议为TCP,我甚至不需要指定主机,因为根据不同的套接字,路由器知道您连接的是哪个数据库(还有另一个套接字mysqlro.sock,用于只读数据库)。由于my.cnf没有附带MySQL客户端包,如何更改默认套接字位置(或者它实际上有?)。如果无法实现上述功能,是否可以默认强制MySQL客户端通过TCP连接?

EN

回答 1

Stack Overflow用户

发布于 2020-04-13 20:48:08

要设置客户机程序的配置(在客户机主机上,在您的情况下,很可能是应用程序服务器),您必须在用户目录中创建一个名为~/.my.cnf的新文件,如4.2.2.2 Using Option Files中所述。使用此文件通过添加[mysql]节来添加mysql应用程序的默认设置。举个例子,当你运行

代码语言:javascript
复制
$ mysql --print-defaults

它将显示以下(示例)输出:

代码语言:javascript
复制
mysql would have been started with the following arguments:
--loose-default-auth=mysql_native_password
--socket=/var/run/mysqld/mysqld.sock
--character-sets-dir=/usr/share/mysql/charsets
--loose-default-character-set=utf8mb4 

(添加新行以提高可读性)

将以下行添加到新的~/.my.cnf文件中:

代码语言:javascript
复制
[mysql]
socket=/tmp/example

从现在开始,将使用以下默认设置:

代码语言:javascript
复制
$ mysql --print-defaults
mysql would have been started with the following arguments:
--loose-default-auth=mysql_native_password
--socket=/var/run/mysqld/mysqld.sock
--character-sets-dir=/usr/share/mysql/charsets
--loose-default-character-set=utf8mb4
--socket=/tmp/example

出于测试目的,当您调用mysql时,您将获得以下错误消息(与预期不谋而合):

代码语言:javascript
复制
$ mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/example' (2)

在本例中,您可能想要添加行host=127.0.0.1,这样它就可以像使用-h127.0.0.1一样使用给定的主机名。您还可以在此文件中添加port设置。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61187555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档