ubuntu mysql5.7 解决不用密码也能登录

本文介绍如何在MySQL 5.7及更高版本中重置root用户的密码,包括使用authentication_string字段更新密码的方法以及针对MySQL 8及以上版本的ALTER USER语法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


登录mysql    mysql -u root -p 或 mysql

use mysql;

// mysql 5.7
update user set authentication_string=PASSWORD("密码") where user='root';

// mysql8 以上
ALTER USER '你的用户名默认root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';

update user set plugin="mysql_native_password";

flush privileges;

quit;

/etc/init.d/mysql restart;

mysql -u root -p 密码;


 

<think>我们正在处理Ubuntu系统中MySQL 5.7启用密码验证登录的问题。根据引用内容,我们可以总结出以下步骤: 1. 首先,我们需要以root用户身份登录MySQL。如果之前没有设置密码,可能使用空密码登录,或者如果已经设置密码,则使用密码登录。如果遇到访问被拒绝的问题(如引用[2]中提到的ERROR 1045),我们需要重置root密码。 2. 引用[3]提供了一个修改root密码的命令: ```sql alter user 'root'@'localhost' identified by 'new_password'; ``` 注意:在MySQL中,每条命令后面都要加分号(;)。 3. 另外,引用[1]展示了如何创建新用户并设置密码和权限,但我们的目标是启用密码验证,所以主要是修改root用户的密码。 4. 如果无法登录,我们可以尝试跳过授权表来启动MySQL,然后修改密码。步骤如下: a. 停止MySQL服务: ```bash sudo systemctl stop mysql ``` b. 使用跳过授权表的方式启动MySQL: ```bash sudo mysqld_safe --skip-grant-tables & ``` c. 然后以root用户登录MySQL(此时需要密码): ```bash mysql -u root ``` d.MySQL提示符下,切换到mysql数据库: ```sql use mysql; ``` e. 更新root用户的密码(注意:MySQL 5.7中,密码存储在authentication_string字段): ```sql update user set authentication_string=password('new_password') where user='root'; ``` 或者使用引用[3]中的ALTER USER语句(但注意,在跳过授权表的情况下,可能能使用ALTER USER,所以使用UPDATE)。 f. 刷新权限并退出: ```sql flush privileges; exit; ``` g. 然后重启MySQL服务: ```bash sudo systemctl stop mysql sudo systemctl start mysql ``` 5. 现在,应该可以使用新密码登录了。 6. 为了确保密码验证已经启用,我们可以尝试使用密码登录: ```bash mysql -u root -p ``` 7. 如果仍然遇到问题,请检查MySQL的配置文件(/etc/mysql/mysql.conf.d/mysqld.cnf或/etc/mysql/my.cnf)中是否设置了跳过密码验证的选项,确保没有`skip-grant-tables`等选项。 注意:以上步骤在Ubuntu系统中针对MySQL 5.7版本。 下面,我们将按照步骤详细说明如何操作。</think>### Ubuntu MySQL 5.7 启用密码验证登录指南 在Ubuntu系统中为MySQL 5.7启用密码验证登录,需按以下步骤操作: 1. **停止MySQL服务** ```bash sudo systemctl stop mysql ``` 2. **以安全模式启动MySQL(跳过权限验证)** ```bash sudo mysqld_safe --skip-grant-tables & ``` 3. **使用root用户无密码登录MySQL** ```bash mysql -u root ``` 4. **切换到mysql系统数据库** ```sql USE mysql; ``` 5. **更新root用户密码**(MySQL 5.7使用`authentication_string`字段) ```sql UPDATE user SET authentication_string=PASSWORD('你的新密码') WHERE User='root'; FLUSH PRIVILEGES; -- 刷新权限[^1][^3] ``` 6. **退出并重启MySQL** ```sql EXIT; ``` ```bash sudo systemctl restart mysql ``` 7. **验证密码登录** ```bash mysql -u root -p # 此时会提示输入密码 ``` > **重要安全提示**: > - 密码需包含大小写字母、数字和特殊字符 > - 避远程访问root账户,必要时创建专用用户[^2] > - 生产环境建议使用`ALTER USER`命令修改密码[^3]: > ```sql > ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; > ``` 若遇到`ERROR 1045 (28000)`访问拒绝错误[^2],请检查: 1. 是否输入正确密码 2. 用户是否存在`mysql.user`表 3. 用户是否具有`localhost`访问权限
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值