Ubuntu 18.04 LTS 全新安装 MySQL/PHPMyadmin 后;没有 root 密码;无法使用 PHPmyadmin 登录

Ubuntu 18.04 LTS 全新安装 MySQL/PHPMyadmin 后;没有 root 密码;无法使用 PHPmyadmin 登录

在全新安装 Ubuntu 18.04 LTS Bionic Beaver 并设置 LAMP 堆栈以及安装 PHPMyadmin 后,我无法登录 PHPMyadmin,因为我在使用 mysql_secure_installation 保护 mysql 时提供的密码不正确,所以看起来是这样。我在互联网上搜索解决方案,但提供的所有解决方案对我而言都没有积极的结果。

一个可行的解决方案将受到赞赏。

答案1

我遇到了同样的问题。显然,MySQL 默认设置为使用基于套接字的身份验证,该身份验证使用系统用户名而不是密码。为了解决这个问题,我使用了以下命令:

以 root 用户身份访问 MySQL:

sudo mysql   # or sudo mysql -u root

设置MySQL root用户的密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';

将上面的“test”替换为您要使用的实际密码

答案2

解决办法是从套接字认证切换 MySQL 的认证方式( IE auth_socket密码验证(即mysql_native_password插件)。

MySQL 5.7 及以后的版本默认使用套接字认证。这意味着您可以sudo mysql在终端中启动 MySQL,而无需密码。即使您使用 创建新的 root 密码mysql_secure_installation,您也无法访问使用密码认证的第三方软件(如 phpmyadmin)。以下是解决方案:

sudo apt install mysql-server
sudo mysql_secure_installation

输入后mysql_secure_installation为 root 创建密码,其余问题均单击“是”。[您会注意到,MySQL 仍然在没有任何密码的情况下启动,因为默认身份验证方法至今尚未更改!]

现在,进入 MySQL

sudo mysql
SELECT user,authentication_string,plugin,host FROM mysql.user;

现在您可以在以下输出中看到,root 有插件,而auth_socket不是mysql_native_password

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *832A85D6EC83FA4A19ACFD461F672B95E4540611 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+

现在我们必须将插件更改为mysql_native_password。将以下命令中的“密码”替换为强密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;

现在,你可以使用上述相同的命令检查每个用户的身份验证方法

SELECT user,authentication_string,plugin,host FROM mysql.user;

输出:

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *C035F91799F4415B005D146ECEB5ADD4D991031F | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *832A85D6EC83FA4A19ACFD461F672B95E4540611 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+

如果您的输出与上面的类似,使用 plugin for root as mysql_native_password,您就可以开始了 :) 现在,您只需使用 root 及其密码即可访问 phpmyadmin。希望这对您有所帮助。

此链接帮助我更好地理解了这个概念

答案3

我必须登录

mysql -u root -p

相关内容