首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置mysqladmin默认用户和密码?

如何设置mysqladmin默认用户和密码?
EN

Stack Overflow用户
提问于 2017-08-02 19:35:27
回答 3查看 1.9K关注 0票数 0

mysql的新安装将默认值设置为rootusing password: NO。但是,在我的系统上,您可以成功地运行mysqladmin ping,尽管mysqladmin ping -u root会失败。这告诉我mysqladmin正在从某个地方读取用户/传递。

我正试着在另一个系统上重新创造这个。我知道用户名和密码,并且可以在我的新服务器上成功地执行mysqladmin ping -u myuser -p 'mypass',但是我需要设置它,这样mysqladmin ping才能单独工作,而不需要显式地传递myusermypass

编辑:

下面是一些显示新旧系统之间区别的输出(最后一行是唯一的区别):

旧服务器

代码语言:javascript
复制
$ 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)'

新服务器

代码语言:javascript
复制
$ 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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-03 13:49:51

mysqladmin ping没有“默认用户”或“默认密码”,即使用户和密码无效,也应该工作。此服务器上的行为是不标准的。

这是因为mysqladmin已经被下面的bash包装器悄悄地替换了:

代码语言:javascript
复制
$ 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函数包装、别名或重载(就像我的另一个答案中的那样)。

票数 0
EN

Stack Overflow用户

发布于 2017-08-02 19:54:12

MySQL 5.7及以上版本将根保存在MySQL日志文件中。

请试试这个:

代码语言:javascript
复制
sudo grep 'temporary password' /var/log/mysqld.log

您可以按照下面的链接设置/重置MYSQL密码

票数 0
EN

Stack Overflow用户

发布于 2017-08-02 20:10:11

我已经找到了一个暂时的解决办法,但这肯定不是理想的办法。可以使用附加用户/传递详细信息的bash函数重载mysqladmin

我不认为这是如何在我的旧服务器上这样做的,因为我已经查看过.bashrc.bash_profile等。

代码语言:javascript
复制
mysqladmin() {
         if [[ $@ == "ping" ]]; then
                 command mysqladmin ping -u myuser -p mypass
         else
                 command mysqladmin "$@"
         fi
}

这很糟糕,因为:

  1. 以明文形式储存的密码
  2. 不适用于其他可能无法从.bashrc加载此脚本的脚本。
  3. 其他人可能没有意识到您已经修改了mysqladmin的行为
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45469530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档