所以我为 Ubuntu 上的所有应用程序/设置编写了这个安装程序脚本,我最近在升级到 16.04 后使用了它。它所做的事情之一就是安装 mysql。我以一种特殊的方式来终止这些用户提示,因为我不希望我的脚本因用户输入而停止。下面是代码:
sudo DEBIAN_FRONTEND=noninteractive apt-get install -qq -y mysql-server
现在,我尝试从终端登录 mysql,但无法登录。它已安装并正在运行,但 root 用户的访问始终被拒绝。
mysqladmin -u root -p password
Enter password:
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost''
我没有输入任何密码,因为我在任何时候都没有设置密码。
有人知道如何解决这个问题吗?谢谢。
最佳答案
如果你想为root设置密码:
对于较新版本的 MySQL(对于 MariaDB < 10.2,请使用底部的查询,因为它不支持更改用户,但仍使用 auth_socket)
If you install 5.7 and don’t provide a password to the
root
user, it will use theauth_socket
plugin. That plugin doesn’t care and doesn’t need a password. It just checks if the user is connecting using a UNIX socket and then compares the username.
取自 Change User Password in MySQL 5.7 With "plugin: auth_socket"和 https://askubuntu.com/a/801950/395418
因此,为了将插件
更改回mysql_native_password
:
使用 sudo 登录:
sudo mysql -u root
使用单个命令更改
插件
并设置密码:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
当然你也可以使用上面的命令设置空密码。
仅供记录,还有另一种方法可以仅更改插件
而不提供密码(将其留空):
update mysql.user set plugin = 'mysql_native_password' where User='root';
FLUSH PRIVILEGES;
关于mysql - Linux MySQL - 无法登录root,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36659798/