Ubuntu18 MySQL错误解决 : ERROR 1698 (28000): Access denied for user ‘root‘@‘localhost‘

博客介绍了在Ubuntu系统下重置MySQL根用户密码的操作。包含两种操作方式,方式1需编辑配置文件、重启、重新设置密码、删除配置文件行后再重启;方式2则是切换到系统用户后重新设置根用户密码。

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

基本信息

Server version: 5.7.32-0ubuntu0.18.04.1 (Ubuntu)

错误 :

~$ mysql -u root -p
Enter password: 
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

操作步骤

方式1 - 操作步骤

  1. 编辑配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,在段落[mysqld]增加行 skip-grant-tables
  2. 重新启动 MySQL
    service mysql restart
  3. 重新设置 MySQL 根用户 root 的密码
    ## 登录 mysql, 此时并不真正需要输入密码,回车直接跳过密码输入即可进入 MySQL 控制台
    mysql -uroot -p
    
    ## 切换到 mysql 数据库
    use mysql;
    
    ## 这里可以通过如下查询语句可以看到 root 的密码验证方式是 auth_socket  
    SELECT User, Host, plugin FROM mysql.user;	
    
    ## +------------------+-----------+-----------------------+
    ## | User             | Host      | plugin                |
    ## +------------------+-----------+-----------------------+
    ## | root             | localhost | auth_socket           |
    ## | mysql.session    | localhost | mysql_native_password |
    ## | mysql.sys        | localhost | mysql_native_password |
    ## | debian-sys-maint | localhost | mysql_native_password |
    ## +------------------+-----------+-----------------------+
    ## 4 rows in set (0.00 sec)
    
    
    ## 更新 root 密码和密码验证方式
    update user set authentication_string=PASSWORD('ThisIs0neC0mplexPasswodString.'),
                   plugin="mysql_native_password" where user='root';
    
    ## 更新权限配置
    flush privileges;
    
    ## 这里可以通过如下查询语句判断以上更新成功
    SELECT User, Host, plugin FROM mysql.user;	
    ## +------------------+-----------+-----------------------+
    ## | User             | Host      | plugin                |
    ## +------------------+-----------+-----------------------+
    ## | root             | localhost | mysql_native_password |
    ## | mysql.session    | localhost | mysql_native_password |
    ## | mysql.sys        | localhost | mysql_native_password |
    ## | debian-sys-maint | localhost | mysql_native_password |
    ## +------------------+-----------+-----------------------+
    ## 4 rows in set (0.00 sec)
    
    ## 退出 mysql 控制台
    exit;	
    
  4. 删除配置文件/etc/mysql/mysql.conf.d/mysqld.cnf段落[mysqld]中的 skip-grant-tables
  5. 重新启动 MySQL
    service mysql restart

方式2 - 操作步骤

  1. 切换到系统用户root
    su root
  2. 重新设置 MySQL 根用户 root 的密码
    ## 登录 mysql, 此时并不真正需要输入密码,回车直接跳过密码输入即可进入 MySQL 控制台
    mysql -uroot -p
    
    ## 切换到 mysql 数据库
    use mysql;
    
    ## 这里可以通过如下查询语句可以看到 root 的密码验证方式是 auth_socket  
    SELECT User, Host, plugin FROM mysql.user;	
    
    ## +------------------+-----------+-----------------------+
    ## | User             | Host      | plugin                |
    ## +------------------+-----------+-----------------------+
    ## | root             | localhost | auth_socket           |
    ## | mysql.session    | localhost | mysql_native_password |
    ## | mysql.sys        | localhost | mysql_native_password |
    ## | debian-sys-maint | localhost | mysql_native_password |
    ## +------------------+-----------+-----------------------+
    ## 4 rows in set (0.00 sec)
    
    
    ## 更新 root 密码和密码验证方式
    update user set authentication_string=PASSWORD('ThisIs0neC0mplexPasswodString.'),
                   plugin="mysql_native_password" where user='root';
    
    ## 更新权限配置
    flush privileges;
    
    ## 这里可以通过如下查询语句判断以上更新成功
    SELECT User, Host, plugin FROM mysql.user;	
    ## +------------------+-----------+-----------------------+
    ## | User             | Host      | plugin                |
    ## +------------------+-----------+-----------------------+
    ## | root             | localhost | mysql_native_password |
    ## | mysql.session    | localhost | mysql_native_password |
    ## | mysql.sys        | localhost | mysql_native_password |
    ## | debian-sys-maint | localhost | mysql_native_password |
    ## +------------------+-----------+-----------------------+
    ## 4 rows in set (0.00 sec)
    
    ## 退出 mysql 控制台
    exit;	
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值