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

Sun*_*nny 4 mysql client config

这是我的 .my.cnf 文件:

 [client]
 user=user1
 password=somePasswd1
 database=someDb
 [client2]
 user=user1
 password=somePassed2
 database=someotherDb
Run Code Online (Sandbox Code Playgroud)

如果我只有一个条目,它会起作用,例如:

 [client]
 user=user1
 password=somePasswd1
 database=someDb
Run Code Online (Sandbox Code Playgroud)

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

Bil*_*win 6

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

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

[client] 组使您能够指定适用于所有客户端的选项。例如,[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';
Run Code Online (Sandbox Code Playgroud)

通过在 user1 之后指定主机,这意味着授权仅在 user1 从 localhost 连接时有效。如果 user1 尝试从任何其他主机连接,则授权将不起作用。这包括密码凭证本身。阅读https://dev.mysql.com/doc/refman/8.0/en/grant.html了解更多信息。