在主目录中为多个数据库配置 .my.cnf 不起作用.适用于单一数据库



这是我的.my.cnf文件:

[client]
user=user1
password=somePasswd1
database=someDb
[client2]
user=user1
password=somePassed2
database=someotherDb

如果我只有一个条目,它可以工作,例如:

[client]
user=user1
password=somePasswd1
database=someDb

[客户]的意义是什么?它应该有什么?另外,如果我想仅将本地主机的这些用户密码限制为怎么办?

https://dev.mysql.com/doc/refman/8.0/en/option-files.html 说:

[client] 选项组由 MySQL 发行版中提供的所有客户端程序读取(但不是由 mysqld 读取(。

使用 [客户端] 组可以指定适用于所有客户端的选项。例如,[client] 是用于指定连接到服务器的密码的相应组。(但请确保选项文件只能由您自己访问,以便其他人无法发现您的密码。请确保不要将某个选项放在 [client] 组中,除非您使用的所有客户端程序都能识别该选项。

MySQL客户端程序在手册中: https://dev.mysql.com/doc/refman/8.0/en/programs-client.html

如果使用类似[client2]的选项组,则除非使用--defaults-group-suffix选项,否则不会使用此选项。

https://dev.mysql.com/doc/refman/8.0/en/option-file-options.html 说:

--

defaults-group-suffix=str

不仅要阅读常用的选项组,还要阅读具有常用名称和后缀 str 的组。例如,mysql 客户端通常读取 [client] 和 [mysql] 组。如果给出了 --defaults-group-suffix=_other 选项,mysql 还会读取 [client_other] 和 [mysql_other] 组。

在您的情况下,您可以运行:

mysql --defaults-group-suffix=2

这将使 mysql 客户端从选项文件中的[client2]组中读取选项。

"另外,如果我想将这些用户密码限制为本地主机怎么办?">

当您向用户授予权限时,将处理此问题。

GRANT ... ON *.* TO 'user1'@'localhost';

通过在用户 1 之后指定主机,这意味着仅当用户 1 从本地主机连接时,授权才有效。如果用户 1 尝试从任何其他主机进行连接,则授权将不起作用。这包括密码凭据本身。有关详细信息,请阅读 https://dev.mysql.com/doc/refman/8.0/en/grant.html。

最新更新