我在我的ubuntu20.04 MySQL实例中安装了EC2服务器8.0,并使用$ sudo mysql_secure_installation进行了安全安装,其中设置了根用户的密码。我还通过匿名用户禁用了MySQL登录。
我使用$ sudo mysql -u root -p登录到MySQL,并使用错误的密码来确认是否启用了正确的密码,并且令人惊讶地能够登录。
此外,我还可以在没有密码的情况下使用$ sudo mysql登录。
在此之后,我尝试使用ALTER USER 'root'@'localhost' IDENTIFIED BY 'PASSWORD';设置密码,然后在MySQL中使用FLUSH PRIVILEGES;设置密码,但结果与以前相同。
我还尝试使用UPDATE mysql.user SET authentication_string=PASSWORD('NEW_USER_PASSWORD') WHERE User='root' AND Host='localhost';直接修改用户表,但遇到了语法错误:-
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right s
yntax to use near '('NEW_USER_PASSWORD') WHERE User='root' AND Host='localhost'' at line 1编辑:在我将根用户的身份验证插件从mysql.user更改为caching_sha2_password之前的auth_socket表。
+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| localhost | debian-sys-maint | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
| localhost | root | auth_socket |
+-----------+------------------+-----------------------+如何解决这些问题并为根用户设置密码?
发布于 2022-01-09 14:16:57
在MySQL 8.0中,caching_sha2_password是默认的身份验证插件,而不是mysql_native_password
您可以像下面这样更改根密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'your_pass';
-- If first fail because you have changed default authentication plugin you can use mysql_native_password
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass';
FLUSH PRIVILEGES;发布于 2022-01-09 14:01:42
Mysql将允许(操作系统) root用户在没有密码的情况下登录,这是基于这样的原则:如果您是root用户,您无论如何都可以访问数据。如果您想测试非根用户登录,请不要使用sudo。
https://stackoverflow.com/questions/70642004
复制相似问题