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

时间:2017-08-02 19:35:28

标签: mysql mariadb

全新安装的mysql默认设置为@IBOutlet weak var button: UIButton! print(button.subviews.count) root。但是,在我的系统上,您可以成功运行using password: NO,但mysqladmin ping将失败。这告诉我mysqladmin正在从某个地方读取用户/传递。

我正在尝试在另一个系统上重新创建它。我知道用户名和密码,并且可以在我的新服务器上成功mysqladmin ping -u root,但我需要对其进行设置,以便mysqladmin ping -u myuser -p 'mypass'单独工作而无需传递mysqladmin ping和{{1明确地。

编辑:

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

旧服务器

myuser

新服务器

mypass

3 个答案:

答案 0 :(得分:0)

MySQL 5.7及更高版本将root保存在MySQL日志文件中。

请试试这个:

sudo grep'临时密码' /var/log/mysqld.log

You can follow the below link to set/reset MYSQL passwords

答案 1 :(得分:0)

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

我不认为这是在我的旧服务器上完成的,因为我已经查看了.bashrc.bash_profile等。

mysqladmin() {
         if [[ $@ == "ping" ]]; then
                 command mysqladmin ping -u myuser -p mypass
         else
                 command mysqladmin "$@"
         fi
}

这很糟糕,因为:

  1. 以明文形式存储的密码
  2. 无法使用其他可能无法从.bashrc
  3. 加载此脚本的脚本
  4. 其他人可能没有意识到您修改了mysqladmin
  5. 的行为

答案 2 :(得分:0)

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函数重载(如我的其他答案)。< / p>