在全新安装 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