无法以 root linux 用户身份运行 mysql 命令
Posted
技术标签:
【中文标题】无法以 root linux 用户身份运行 mysql 命令【英文标题】:Can't run mysql commands as root linux user 【发布时间】: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命令而不需要密码。
this 或 this 是否适合您?
不,这些答案仍然需要某种方式的密码
【参考方案1】:
您在 MySql 中的 root 帐户有密码。试试这个
mysql -p
并输入您或其他人设置的密码。
如果不行,试试
mysql -h localhost -u root -p
那个不起作用,你需要重置你的 MySql 根密码。这是关于“toobz”的几个教程的主题
【讨论】:
mysql -p
要求 root linux 帐户能够在不提供密码的情况下运行 mysql
。这是我的问题。
@Dan 您的问题是您的 root 用户有密码,而您想在没有密码的情况下登录。这是不可能的【参考方案2】:
如果 MySQL root 用户有密码,使用默认的身份验证插件,那么你必须提供密码才能连接,句号。您可以配置一个没有密码的帐户,但这是您应该避免的习惯。
您可以通过以下任何一种方式提供密码:
使用-p
选项以交互方式输入
在命令行中以明文形式输入,如-p<mypassword>
在~/.my.cnf
文件的[client]
部分中以纯文本形式存储它(请参阅https://dev.mysql.com/doc/refman/8.0/en/option-files.html)
将其以模糊的形式存储在您的 ~/.mylogin.cnf
文件中(请参阅 https://dev.mysql.com/doc/refman/8.0/en/mysql-config-editor.html)。
还有一种方法可以通过环境变量提供密码,但现在不鼓励这样做,因为它真的不安全。
【讨论】:
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;
【讨论】:
以上是关于无法以 root linux 用户身份运行 mysql 命令的主要内容,如果未能解决你的问题,请参考以下文章