mysql的新安装将默认值设置为root和using password: NO。但是,在我的系统上,您可以成功地运行mysqladmin ping,尽管mysqladmin ping -u root会失败。这告诉我mysqladmin正在从某个地方读取用户/传递。
我正试着在另一个系统上重新创造这个。我知道用户名和密码,并且可以在我的新服务器上成功地执行mysqladmin ping -u myuser -p 'mypass',但是我需要设置它,这样mysqladmin ping才能单独工作,而不需要显式地传递myuser和mypass。
编辑:
下面是一些显示新旧系统之间区别的输出(最后一行是唯一的区别):
旧服务器
$ mysqladmin ping -u root
/junk/mysqladmin.orig: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
$ mysqladmin ping -u myuser
mysqld is alive
$ mysqladmin ping
/junk/mysqladmin.orig: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'新服务器
$ mysqladmin ping -u root
/junk/mysqladmin.orig: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
$ mysqladmin ping -u myuser
mysqld is alive
$ mysqladmin ping
mysqld is alive发布于 2017-08-03 13:49:51
mysqladmin ping没有“默认用户”或“默认密码”,即使用户和密码无效,也应该工作。此服务器上的行为是不标准的。
这是因为mysqladmin已经被下面的bash包装器悄悄地替换了:
$ cat `which mysqladmin`
#!/bin/bash
# wrapper to make our local MySQL work
#
# Where are we again?
case $0 in
/*) SHELLFILE=$0 ;;
./*) SHELLFILE=${PWD}${0#.} ;;
../*) SHELLFILE=${PWD%/*}${0#..} ;;
*) SHELLFILE=$(type -P "$0") ; if [ "${SHELLFILE:0:1}" != "/" ]; then SHELLFILE="${PWD}/$SHELLFILE" ; fi ;;
esac
# readlink -m makes sure SHELLDIR is a simple absolute path
SHELLDIR=`readlink -m "${SHELLFILE%/*}"`
# Call the original mysqladmin with appropriate settings
${SHELLDIR}/mysqladmin.orig --protocol=TCP --port=4777 $*在我的例子中,修复方法是打开端口4777,但故事的一般寓意是:
如果mysqladmin (或任何程序)是以一种无文档的方式运行的,那么值得检查的是,该程序没有用bash函数包装、别名或重载(就像我的另一个答案中的那样)。
发布于 2017-08-02 19:54:12
MySQL 5.7及以上版本将根保存在MySQL日志文件中。
请试试这个:
sudo grep 'temporary password' /var/log/mysqld.log发布于 2017-08-02 20:10:11
我已经找到了一个暂时的解决办法,但这肯定不是理想的办法。可以使用附加用户/传递详细信息的bash函数重载mysqladmin。
我不认为这是如何在我的旧服务器上这样做的,因为我已经查看过.bashrc、.bash_profile等。
mysqladmin() {
if [[ $@ == "ping" ]]; then
command mysqladmin ping -u myuser -p mypass
else
command mysqladmin "$@"
fi
}这很糟糕,因为:
.bashrc加载此脚本的脚本。mysqladmin的行为https://stackoverflow.com/questions/45469530
复制相似问题