【发布时间】:2016-05-17 15:19:54
【问题描述】:
我无法让 mysql 命令行历史记录为我的用户工作,即使它对同一台机器上的其他用户工作正常(Debian“wheezy”发行版上的 mysql 5.5。)我无计可施,并希望这里有人可以帮助我...
每当我启动 mysql 时,我都没有历史可回滚(例如,当我尝试向上箭头时,它只会给出一个可视的铃铛警报)。
但是,当我使用它时,历史记录运行良好(在单个会话中)。即,自从我启动 mysql 以来,我可以回到之前的命令。但是,第二次我退出 mysql,我失去了我所有的历史,下一次必须重新开始。
不用说,这非常令人沮丧!
为了排除故障,我做了三件事,但都没有任何区别:
(1)我明确设置了环境变量(使用bash):
% MYSQL_HISTFILE=~/.mysql_history
% echo $MYSQL_HISTFILE
/var/home/userx/.mysql_history
...我仔细检查了权限是否设置正确(在文件和目录上——注意,我创建了一个空文件只是为了确保它本身没有问题):
drwxr-xr-x 53 userx userx 4096 Jan 24 15:26 /var/home/userx
-rw------- 1 userx userx 0 Jan 31 04:14 /var/home/userx/.mysql_history
我确认它是“-rw-------”并且该文件由相关用户(我)拥有,与同一台机器上的所有其他用户相同,它可以正常工作。不过,mysql 客户端文档并没有说您需要设置此环境变量,除非您想更改它(所以我当然也尝试过没有设置该变量)。
(2) 我尝试在 /etc/mysql/my.cnf 中设置/调整各种与日志记录相关的配置(通过查看文档;但是,所有设置似乎都是关于日志记录,而不是命令行历史记录)。
/etc/mysql/*.cnf 中的所有设置似乎都与命令行日志记录无关(仅与服务器级别的日志记录有关,例如到/var/log/mysql...)。
可以肯定的是,我将所有内容都恢复到标准安装中的状态(通过 debian wheezy apt-get install mysql),所以我的任何胡闹都不是真正的原因。 (注意:它适用于同一台机器上的其他用户!)
(3) 我尝试检查/调整 mysql 本身中的各种变量(基于我看到的各种内容)。但是这些很难找到好的信息,而且由于它适用于同一台机器上的其他用户,我怀疑这是否重要。无论如何,这就是我在这里所做的:
首先,为了获得所有当前设置变量的列表,我做了:
% echo "show variables" | mysql > /tmp/vars
浏览它们,我没有看到任何似乎相关的东西。但这里有一些例子(在这里转储所有这些太长了;让我知道是否有一个变量或一个我可以做的搜索可能会产生答案):
% grep -i hist /tmp/vars
performance_schema_events_waits_history_long_size 10000
performance_schema_events_waits_history_size 10
profiling_history_size 15
...以及...
% grep -i log /tmp/vars (note: irrelevant binlog stuff excerpted)
back_log 50
expire_logs_days 10
general_log OFF
general_log_file /var/lib/mysql/xxx.log
innodb_log_group_home_dir ./
innodb_mirrored_log_groups 1
log OFF
log_error
log_output FILE
log_queries_not_using_indexes OFF
log_slave_updates OFF
log_slow_queries OFF
log_warnings 1
slow_query_log OFF
slow_query_log_file /var/lib/mysql/rimu3-slow.log
这些似乎都不相关,我根据与更改变量相关的各种网络搜索所做的任何事情都没有解决我的问题——而且,请记住:同一台机器上的其他用户都没有这个问题。因此,除非我没有找到的变量或其他服务器状态实际上专门指的是我的用户,或者在某处我没有发现专门指我的用户的访问策略(例如),否则这是无法解释的。
我可以在任何地方找到关于 mysql_history 文件的唯一文档是 here。但它并没有告诉你如何启用 mysql_history! (它只说明了如何禁用它,或者改变它的去向,这对我来说也没有任何改变。)
最后,我已经确认,最后,我的故障排除并没有导致任何设置不正确:我回到了标准环境变量、服务器配置、变量等。
我真的完全被难住了。任何帮助将不胜感激!
史蒂夫
【问题讨论】:
-
好吧,我至少在寻找解决方案的正确轨道上......我认为这与使用 mysql 正在使用的
readline库(或设置这来自那个。)但是,要清楚,我查看了 /etc/inputrc 和 ~/.inputrc ,没有任何东西可以设置历史文件的大小。 然而,当我使用rlwrap包装mysql 命令行时,我的问题就消失了!没错——当我通过rlwrap运行mysql 时,~/.mysql_history 突然开始更新,例如:% rlwrap -a -A mysql。 (它只适用于-a和-A。)