12

我正在尝试使用命令行上的 --defaults-file 选项登录 mysql:

$ mysql --defaults-file ~/mycnf.cnf

但我收到以下错误:

mysql: unknown option '--defaults-file'

但是这个选项在帮助中列出:

$ mysql --help
...
Default options are read from the following files in the given order:
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
The following groups are read: mysql client
The following options may be given as the first argument:
--print-defaults        Print the program argument list and exit.
--no-defaults           Don't read default options from any option file.
--defaults-file=#       Only read default options from the given file #.
--defaults-extra-file=# Read this file after the global files are read.
--defaults-file=#       Only read default options from the given file #.

这里发生了什么?这是 mysql --version 的输出

$ mysql --version
mysql  Ver 14.14 Distrib 5.1.69, for redhat-linux-gnu (x86_64) using readline 5.1
4

4 回答 4

18

就我而言,问题是参数错位

--console参数应该是最后的...

我原来的看法:

mysqld --console --defaults-file="path-to-ini/my.ini"

虽然应该运行这个:

mysqld --defaults-file="path-to-ini/my.ini" --console

于 2018-10-20T20:27:31.487 回答
12

它应该是:

mysql --defaults-file=~/mycnf.cnf

你错过了=.

另请注意,用于指定选项文件的选项必须位于任何其他选项之前。有关具体细节,请参阅文档

于 2013-05-23T18:55:29.967 回答
7

我想为这个问题添加另一个答案,以解决我遇到的类似情况。

就我而言,命令类似于:

/path/to/mysqld_safe start --defaults-file=/path/to/my.cnf --other-options-here

mysql会抱怨

unknown variable '--defaults-file=/path/to/my.cnf'

为了解决这个问题,我不得不“删除”start命令,使该行如下所示:

/path/to/mysqld_safe --defaults-file=/path/to/my.cnf --other-options-here

然后mysql最终会开始使用指定的配置文件。

于 2016-05-23T14:32:26.817 回答
3

为了使用 bash/sh 脚本而不是直接在 OSX 的 cli 上解决相同的问题,我不得不使用 mysql.client 应用程序的完整路径。

$which mysql
/usr/local/zend/mysql/bin/mysql

MySql 由 Zend Server 安装,如下面的路径所示,并包装了 mysql.client 版本:

$mysql --version
/usr/local/zend/mysql/bin/mysql.client  Ver 14.14 Distrib 5.5.27, for osx10.6 (i386) using readline 5.1

错误继续显示,直到我更改我的 bash 脚本调用 mysql 的方式。

从:

MYSQL=`which mysql`
...
${MYSQL} --defaults-file=/dev/stdin -e "SHOW DATABASES"

输出

$ ./import_dbs.sh
/usr/local/zend/mysql/bin/mysql.client: unknown variable 'defaults-file=/dev/stdin'

改成:

MYSQL=/usr/local/zend/mysql/bin/mysql.client
...
${MYSQL} --defaults-file=/dev/stdin -e "SHOW DATABASES"

输出

$ ./import_dbs.sh
Database
information_schema
mysql
performance_schema
test

编辑:我也可以在我的脚本中使用以下内容:

MYSQL=`which mysql.client`

$ which mysql.client
/usr/local/zend/mysql/bin/mysql.client

显然,调用 mysql 和 mysql.client 之间存在细微差别,这会影响在脚本中传递 --defaults-file 或 OP 中提到的其他变量作为第一个参数的能力。我没有通过外壳测试

于 2016-12-30T21:44:03.403 回答