Настройка .my.cnf в домашнем каталоге для нескольких баз данных не работает. Работает на одну базу данных - PullRequest
0 голосов
/ 09 сентября 2018

Вот мой файл .my.cnf:

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

Это работает, если у меня есть только одна запись, как в:

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

Какое значение [клиент]? Что это должно иметь? Кроме того, что, если я хочу ограничить эти пароли пользователей только для localhost?

1 Ответ

0 голосов
/ 09 сентября 2018

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 говорит:

- по умолчанию-группа-суффикс ул

=

Читайте не только обычные группы параметров, но также группы с обычными именами и суффиксом str. Например, клиент mysql обычно читает группы [client] и [mysql]. Если задана опция --defaults-group-суффикс = _other, mysql также считывает группы [client_other] и [mysql_other].

В вашем случае вы можете запустить:

mysql --defaults-group-суффикс = 2

Это заставит клиента mysql читать параметры из группы [client2] в вашем файле параметров.

"Кроме того, что если я захочу ограничить эти пароли пользователей только для localhost?"

Это обрабатывается, когда вы предоставляете привилегии своему пользователю.

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

Указывая хост после user1, это означает, что грант работает только тогда, когда user1 подключается с localhost. Если user1 пытается подключиться с любого другого хоста, гранты не будут работать. Это включает в себя сам пароль. Прочитайте https://dev.mysql.com/doc/refman/8.0/en/grant.html для получения дополнительной информации.

...