【问题标题】:Can't run mysql commands as root linux user无法以 root linux 用户身份运行 mysql 命令
【发布时间】:2022-01-07 12:43:37
【问题描述】:

作为 linux root 用户:

root@local:~# mysql

ERROR 1045 (28000): Access denied for user 'root'@'localhost'(使用 密码:否)

我很困惑。 root 用户不应该能够在没有额外身份验证的情况下运行mysql 吗?我该如何解决这个问题?

【问题讨论】:

  • 如果你只运行mysql root 用户应该没有密码
  • mysql -u root -p 怎么样?它要求输入密码吗?
  • 如果我指定mysql用户当然会要求输入密码,但我不想提供密码,我想以linux root身份运行mysql命令而不需要密码。
  • thisthis 是否适合您?
  • 不,这些答案仍然需要某种方式的密码

标签: mysql root sudo


【解决方案1】:

您在 MySql 中的 root 帐户有密码。试试这个

mysql -p

并输入您或其他人设置的密码。

如果不行,试试

mysql -h localhost -u root -p

那个不起作用,你需要重置你的 MySql 根密码。这是关于“toobz”的几个教程的主题

【讨论】:

  • mysql -p 要求 root linux 帐户能够在不提供密码的情况下运行 mysql。这是我的问题。
  • @Dan 您的问题是您的 root 用户有密码,而您想在没有密码的情况下登录。这是不可能的
【解决方案2】:

如果 MySQL root 用户有密码,使用默认的身份验证插件,那么你必须提供密码才能连接,句号。您可以配置一个没有密码的帐户,但这是您应该避免的习惯。

您可以通过以下任何一种方式提供密码:

还有一种方法可以通过环境变量提供密码,但现在不鼓励这样做,因为它真的不安全。

【讨论】:

  • auth_socket 呢?
  • 如果您创建要使用 auth_socket 插件进行身份验证的 root 用户(例如:CREATE USER 'root'@'localhost' IDENTIFIED WITH auth_socket),这将起作用,但如果 root 用户是以传统方式创建的,则使用密码进行身份验证,则 auth_socket 将不起作用。
  • 我不明白我设置的最后一个服务器是如何默认设置 auth_socket 而这个新服务器没有。我正在尝试编写一个安装脚本来初始化 mysql 数据库,并且我想运行 mysql 命令。我要么需要使用 auth_socket(显然不是默认值),要么能够在 bash 脚本中提供 root 密码(-p 似乎不起作用,即使您提供了值它也会提示输入密码)。
  • 请注意,在命令行上提供密码值要求您在 -p 和密码之间没有空格。即-p password 错误,它会将密码解释为下一个参数。您必须像 -ppassword 一样指定它。
  • 我不知道谁设置了您的最后一个服务器或它是什么版本。也许是 MariaDB? MariaDB 不是 MySQL。它们改变了很多特性,其中之一是创建 root 用户以默认使用 auth_socket,参见。 mariadb.com/kb/en/authentication-plugins
【解决方案3】:

ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;

【讨论】:

    猜你喜欢
    • 2015-07-07
    • 2022-11-25
    • 1970-01-01
    • 2011-10-03
    • 2019-01-12
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    相关资源
    最近更新 更多