关于Mysql5.7修改root密码ERROR 1054的问题

本文介绍如何在MySQL5.7中正确修改root用户的密码,包括解决未知的'password'列错误,找到正确的列名并更新密码。

    平台Windows,Linux未测试

    从官网下载的MySQL5.7.16 64位,配置好MySQL之后由于root密码为空所以我去修改MySQL的root密码,先用

mysql -uroot -p
进入数据库。

使用

use mysql;
使用mysql数据库,然而当我用

update user set password = password('mysql') where user='root';
修改MySQL的root密码时提示出错
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
懵逼,于是使用
show create table user;
查看用户表,发现果然是没有password列,取而代之的是authentication_string列,于是尝试使用

update user set authentication_string = password("mysql") where user='root';
修改,提示成功

退出,重启MySQL服务

再次登录,并使用修改authentication_string之后的密码,成功进入。





<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`访问权限
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值